存储运行INSERT语句的日期和时间的最佳方法是什么?是否在查询中包含Now()函数?一旦完成,是否可以计算72小时是否已经过去了?
答案 0 :(得分:1)
查看TimeStamp
字段,特别是您可以创建表格本身来为您完成所有工作:
CREATE TABLE `table` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`updatetime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
这里,当创建记录(即INSERT)时,数据库将为您填充字段内容。
您可以使用DATE_DIFF()
或TIME_DIFF
函数运行简单查询,以检查是否有超过72小时的记录。请注意,您也可以在此处使用UNIX_TIMESTAMP()
功能。
有关详细信息,请查看here。
答案 1 :(得分: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;
即使没有创建时间的索引。如果你确实有一个创建时间的索引,那么第一个查询将不会使用它,但第二个查询会更快。