如何向MySQL数据库提交时间戳

时间:2012-08-28 09:21:32

标签: mysql timestamp

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

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

我还看看是否有通过PHP生成ISO8601时间戳的方法,但我无法找到从PHP / unix时间戳转换为ISO8601的方法。

干杯!

1 个答案:

答案 0 :(得分:1)

MySQL可以在每个表格中自动初始化和/或更新单个 TIMESTAMP类型列到INSERTUPDATE上的当前时间。如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();