0

可能重复:
MySQL 表行中的时间和日期戳

存储 INSERT 语句运行的日期和时间的最佳方法是什么?是否会在查询中包含 Now() 函数?完成后,是否可以计算 72 小时是否已过?

4

2 回答 2

1

查看该TimeStamp字段,特别是您可以创建表本身来为您完成所有工作:

CREATE TABLE `table` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `updatetime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)

在这里,当创建记录(即 INSERT)时,数据库将为您填充字段内容。

DATE_DIFF()您可以使用or函数运行一个简单的查询TIME_DIFF来检查任何超过 72 小时的记录。请注意,您可能也想在UNIX_TIMESTAMP()此处使用该功能。

欲了解更多信息,请查看此处

于 2012-10-12T09:10:10.187 回答
1

如果您使用CURRENT_TIMESTAMP列的默认值定义 datetime 属性,则不需要指定显式值。如果将类型定义为TIMESTAMP,则每次修改记录时都会将其更新为当前时间,除非您专门覆盖该行为。

是否可以计算72小时是否已过?

是的 - 但请确保将所有静态计算放在比较操作的一侧:

SELECT *
FROM yourtable
WHERE NOW() - INTERVAL 72 HOURS > yourtable.created_time;

会比......更快

SELECT *
FROM yourtable
WHERE NOW()> yourtable.created_time + INTERVAL 72 HOURS;

即使没有创建时间的索引。如果您在创建时间上确实有索引,那么第一个查询将不会使用它,但第二个查询会更快。

于 2012-10-12T09:17:20.340 回答