gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:18:39 27 4
gpt4 key购买 nike

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

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

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

干杯!

最佳答案

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

One TIMESTAMP column in a table can have the current timestamp as the default value for initializing the column, as the auto-update value, or both. It is not possible to have the current timestamp be the default value for one column and the auto-update value for another column.

在您的情况下,因为您希望单独的列来保存记录的初始化和更新时间,所以您需要显式设置其中一列(或两列);可以使用 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();

关于mysql - 如何向 MySQL 数据库提交时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12156269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com