我有一个MySQL表,hen创建自动将ISO 8601时间戳放入其中一个字段。它这样做是因为我已将phpMyAdmin的默认值设置为TIMESTAMP。
当我更新字段时,我想将另一个时间戳添加到另一个字段。显然我不能使用默认选项。是否有SQL命令将当前时间戳添加到字段?我已经快速阅读了MySQL网站,但我找不到办法做到这一点......
我还看看是否有通过PHP生成ISO8601时间戳的方法,但我无法找到从PHP / unix时间戳转换为ISO8601的方法。
干杯!
答案 0 :(得分:1)
MySQL可以在每个表格中自动初始化和/或更新单个 TIMESTAMP
类型列到INSERT
和UPDATE
上的当前时间。如Automatic Initialization and Updating for TIMESTAMP
中所述:
表中的一个
TIMESTAMP
列可以将当前时间戳作为初始化列的默认值,作为自动更新值,或两者都有。当前时间戳不可能是一列的默认值和另一列的自动更新值。
在您的情况下,因为您希望单独的列保存记录的初始化和更新时间,所以您需要明确设置其中一列(或两列);可以使用NOW()
函数在SQL中显式设置日期/时间列到当前日期/时间:
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();