发出命令SHOW CREATE TABLE whatever
然后看表定义。
它可能有这样的一行
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
在里面。 DEFAULT CURRENT_TIMESTAMP
表示任何INSERT
没有明确时间戳设置的都使用当前时间。同样,ON UPDATE CURRENT_TIMESTAMP
意味着任何没有明确时间戳的更新都会导致对当前时间戳值的更新。
您可以在创建表时控制此默认行为。
或者,如果时间戳列一开始没有正确创建,您可以更改它。
ALTER TABLE whatevertable
CHANGE whatevercolumn
whatevercolumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
这将导致表上的 INSERT 和 UPDATE 操作自动更新您的时间戳列。如果要在whatevertable
不改变时间戳的情况下更新,即
防止列在其他列更改时更新
那么你需要发布这种更新。
UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'
这适用于TIMESTAMP
和DATETIME
列。(在 MySQL 版本 5.6.5 之前,它仅与TIMESTAMP
s 一起使用)当您使用TIMESTAMP
s 时,会考虑时区:在正确配置的服务器机器上,这些值始终以 UTC 存储并在检索时转换为本地时间。