0

我有一个 MySQL 表,它会自动创建一个 ISO 8601 时间戳到其中一个字段中。这样做是因为我将 phpMyAdmin 的默认值设置为 TIMESTAMP。

当我更新字段时,我想向另一个字段添加另一个时间戳。显然我不能使用默认选项来做到这一点。是否有将当前时间戳添加到字段的 SQL 命令?我已经快速阅读了 MySQL 网站,但我找不到解决方法......

我还查看了是否有一种通过 PHP 生成 ISO8601 时间戳的方法,但我想不出一种将 PHP/unix 时间戳转换为 ISO8601 的方法。

干杯!

4

1 回答 1

1

MySQL 可以自动将每个表中的单个 类型列初始化和/或更新为TIMESTAMP当前时间。如自动初始化和更新中所述:INSERTUPDATETIMESTAMP

表中的一TIMESTAMP列可以将当前时间戳作为初始化该列的默认值,作为自动更新值,或两者兼而有之。不可能将当前时间戳设为一列的默认值,而将另一列的自动更新值设为默认值。

在您的情况下,因为您希望单独的列来保存记录的初始化和更新时间,所以您需要明确设置这些列中的一个(或两个);可以使用以下函数将日期/时间列显式设置为 SQL 中的当前日期/时间NOW()

INSERT INTO my_table (created) VALUES (NOW());
UPDATE my_table SET updated = NOW();

甚至可以使用触发器来实现 MySQL 本身不提供的自动行为:

CREATE TRIGGER set_init_time AFTER INSERT ON my_table FOR EACH ROW
  SET NEW.created = NOW();

CREATE TRIGGER set_updt_time AFTER UPDATE ON my_table FOR EACH ROW
  SET NEW.updated = NOW();
于 2012-08-28T09:31:42.497 回答