我需要从昨天开始选择所有记录。表中的日期存储为纪元时间戳。我尝试过类似的东西,但它没有用。
select to_char((SELECT TIMESTAMP WITH TIME ZONE 'epoch' + history.clock * INTERVAL '1 second') , 'YYYY-MM-DD HH24:MI:SS ') AS Data
from history
WHERE
history.clock >= EXTRACT( epoch FROM current_timestamp - interval '1 day') and
history.clock <= EXTRACT( epoch FROM current_timestamp - interval '1 day') ;
答案 0 :(得分:0)
那么你的问题是你说的是“时钟&gt; = 1510444800和时钟&lt; = 1510444800”的所有内容。你给自己一个单一的范围。
以下查询应该可以满足您的需求。将范围的上限增加86399(一天有86400秒,但我们已经从我们的提取中获得与::date
演员结合时的第一秒)
select
to_char(to_timestamp(history.clock), 'YYYY-MM-DD HH24:MI:SS ') as Data
from
history
where
history.clock between extract(epoch from 'yesterday'::date)::integer and (extract(epoch from 'yesterday'::date)::integer + 86399)
我还提到了一些我认为是改进的内容。当Postgres支持将'yesterday'
投射到某个日期时,无需在昨天获得间隔。将值与上限和下限进行比较是between
关键字的用途,并且有一个用于从unix时间戳转换的内置函数。