我正在尝试编写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
有人可以帮我找出这句话中的错误吗?
谢谢!
答案 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先前建议的那样