1

我需要知道自从我的 MySQL 数据库中的表被编辑以来的时间。有没有办法在 PHP 中做到这一点?我能想到的唯一方法是获取更新时间,并将其与当前时间进行比较(这会有点麻烦)。

4

3 回答 3

2
SELECT TIMEDIFF(CURRENT_TIME, UPDATE_TIME)
FROM   INFORMATION_SCHEMA.TABLES
WHERE  TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'my_table'
于 2012-10-23T07:03:27.973 回答
1

一种解决方案是添加一个timestamp字段,该字段会在行更改时自动更新。然后您可以通过选择最后更新值来找到最后更改时间:

# Add a timestamp column:
ALTER TABLE [TABLENAME] add column `ts_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP;

# Get the last update value:
SELECT MAX(ts_update) from [TABLENAME];
于 2012-10-22T22:58:57.927 回答
0

这有点痛苦,因为SHOW TABLE STATUS似乎没有返回标准结果集。我试图将它用作子查询的每一种方式都失败了。似乎您需要以编程方式解决它。

SHOW TABLE STATUS
WHERE name = 'target_table';

如果您担心时区,只需单独SELECT NOW()获取 mysql 服务器的时间。

注意:这只会显示更新表架构的时间。如果您想知道最后一次插入/编辑行的时间,您必须像 Amirshk 建议的那样添加时间戳列。

于 2012-10-22T23:03:34.917 回答