无法转换和选择sql中过去24小时的简单epoch时间戳

wvt8vs2t  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(364)

我有一个非常简单的带有“text”类型的time-date列,它存储epoch时间戳(1595876617)
我要选择仅在过去24小时内的列。。我尝试了unix\u timestamp(),从\u timestamp和更多我无法完成它

SELECT * FROM stories WHERE UNIX_TIMESTAMP(time_date) > DATE_SUB(CURDATE(), INTERVAL 1 DAY) order by id desc;

SELECT * FROM stories WHERE time_date >= now() - INTERVAL 1 DAY;

SELECT * FROM news WHERE time_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)

我试了很多都没用我还是得到了超过24小时的结果。。我做错什么了?

tcbh2hod

tcbh2hod1#

一种简单而有效的方法是计算一天前的时间戳,并用于过滤:

where time_date > unix_timestamp() - 24 * 60 * 60
``` `unix_timestamp()` ,在没有参数的情况下调用时,提供当前epoch,从中可以将24小时减为秒。这可能比嵌套函数调用更有效 `now()` .
mysql将转换 `TEXT` 值设置为整数以执行比较,因此不需要显式强制转换 `time_date` . 但是,尽管是隐含的,转换确实发生了。我强烈建议将列的数据类型更改为 `int` .
laximzn5

laximzn52#

UNIX_TIMESTAMP 返回一个数字。
声明应如下所示:

SELECT *
FROM stories
WHERE date > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 24 HOUR))

相关问题