PostgreSQL查询每天从晚上10点至第二天早上6点获取数据

时间:2018-12-26 07:25:45

标签: postgresql timescaledb

我是PostgreSQL(timescaleDB)的新手,正在为我的应用程序编写时间序列查询。

我遇到这样的情况,我必须每天在指定的时间范围(12月1日至12月26日)获取选定时间范围(例如上午10点至下午6点)的数据。

下面是我要执行的查询。

select
    time_bucket('1 day',
    device_time at time zone 'Asia/Kolkata') as device_timestamp,
    round(cast(last(active_energy_delivered_kwh, device_time) - first(active_energy_delivered_kwh, device_time) as numeric), 2) as kwh
from
    schneider_new
where
    meter_id in ('s3')
    and device_time::date between date '2018-12-01' and date '2018-12-26'
    and device_time::time between time '10:00:00' and time '18:00:00'
group by
    device_timestamp

上面的查询工作正常,我可以根据需要获取正确的数据。

现在,我想从10 pm tonight to 6 am tomorrow获取数据。 当我将结果按device_timestamp分组时(即每天进行一次),我无法使用此查询从10 pm to 6 am获取数据。

我尝试了很多方法来使其工作,但是没有一种解决方案起作用。

请帮助我了解正确的方法。

1 个答案:

答案 0 :(得分:0)

device_time between (current_date + '22:00'::time) and (current_date + 1 + '06:00'::time