根据时间戳删除超过24小时或1天的记录

时间:2018-10-03 07:16:56

标签: php mysqli timestamp

我正在尝试编写mysql查询来删除超过24小时的记录。

我下面使用的SELECT sql语句

SELECT * FROM Request WHERE 
timeStamp <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))

表包含许多早于1天的记录,但是此sql查询的结果为空。此外,它也不会显示任何错误消息。

时间戳字段结构为

Name: timeSatamp
Type: timestamp 
Default: CURRENT_TIMESTAMP

有人可以帮我找出这句话中的错误吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

您不需要FROM_UNIXTIME(),这样就可以做您想要的

SELECT * FROM `ts` WHERE timeStamp <= DATE_SUB(NOW(), INTERVAL 1 DAY)

答案 1 :(得分:0)

您可以使用DATEDIFF代替从两个日期开始的比较。

SELECT * FROM Request WHERE DATEDIFF(timestamp, NOW())>=1;

DATEDIFF返回两个日期/时间戳之间的天数。

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_datediff

答案 2 :(得分:0)

您的查询应如下所示:

SELECT * from Request where FROM_UNIXTIME(timeStamp) <= (NOW() - INTERVAL 1 DAY);

答案 3 :(得分:0)

如果字段时间戳包含10位数字(例如“ 1566836368”),则正确答案为

SELECT * from Request where FROM_UNIXTIME(timeStamp) <= (NOW() - INTERVAL 1 DAY);

就像@akshaypjoshi先前建议的那样