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

标签 mysql timestamp

我有一个 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/

相关文章:

mysql - 插入随机字符到MYSQL数据库

mysql - 将 TSV 文件从存储桶移动到 Cloud MySql

mysql - 如果太长停止 mysql 查询

PHP 将 mysql 时间戳添加到现有时间戳

python - 在 Python 中绘制时间戳

load - MySQL转储和加载时间之间的不合理差异

MySQL 用条件连接多个(超过 2 个)表

java - 比较java中的两个时间戳

php - 如何在 PHP 中实现 "who' s 在线功能?

java - 格式化参数“"java.lang.IllegalArgumentException: Illegal pattern character ' T”时出现异常