如何基于Linux秒级时间戳获取最近24小时的数据库条目?
解决bigint类型时间戳转DATE报错的问题
错误原因:你的timestamp字段是存储秒级Linux时间戳的bigint类型,PostgreSQL无法直接将整数类型强制转换为DATE类型,必须先转换为时间戳类型。
以下是两种可行的解决方法:
- 方法一:先将bigint时间戳转为timestamp,再转为DATE进行比较
SELECT * FROM some_table WHERE to_timestamp(timestamp)::DATE > CURRENT_DATE - INTERVAL '1 day';
- 方法二:直接比较时间戳数值(推荐,可利用索引提升效率)
将"最近24小时"的起始时间转为秒级时间戳,直接与字段的bigint值对比,避免每条记录都做类型转换:
SELECT * FROM some_table WHERE timestamp > extract(epoch from CURRENT_TIMESTAMP - INTERVAL '1 day')::bigint;
注意:如果你的时间戳是毫秒级,需要先除以1000再转换,比如
to_timestamp(timestamp/1000)。
内容的提问来源于stack exchange,提问作者François Richard
相关产品推荐
相关产品推荐

