Postgres选择从昨天起存储为纪元的记录

时间:2017-11-13 15:59:53

标签: postgresql date epoch

我需要从昨天开始选择所有记录。表中的日期存储为纪元时间戳。我尝试过类似的东西,但它没有用。

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') ;

1 个答案:

答案 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时间戳转换的内置函数。