PSQL查询以获取特定月份中发布的所有值

时间:2015-11-11 19:12:21

标签: postgresql datetime psql

我正在尝试编写查询来获取特定月份的值。我遇到日期转换问题,其中psql将值存储为bigint。我当前的查询在下面工作,但我必须在查询中明确地给出日期。我正在寻找一个更通用的(如在gui中选择一个月并转换为查询)。为此,我需要仅比较日期字段的月份和年份(以适应闰年)。 timetocomplete和executiontime是时间戳(bigint)列,我正在尝试计算no。在执行时间内工作的小时数

select sum(s.timetocomplete/1000*1/3600)
from requestdetail s
where
    ('2015-10-31 23:59:59'::timestamp at time zone 'UTC' > TO_TIMESTAMP(executedtime / 1000))
    and
    TO_TIMESTAMP(executedtime / 1000) < '2015-10-31 23:59:59'::timestamp at time zone 'UTC'

2 个答案:

答案 0 :(得分:0)

你应该使用 epoch()函数将datetime转换为秒,然后计算并比较这些值

答案 1 :(得分:0)

2015年10月:

with work_month (work_month) as ( values
    ('2015-10-01'::date)
)
select sum(s.timetocomplete / 1000 / 3600)
from requestdetail s cross join work_month
where
    work_month <= to_timestamp(executedtime / 1000)
    and
    to_timestamp(executedtime / 1000) < work_month + interval '1 month'

更简单的版本:

select sum(timetocomplete / 1000 / 3600)
from requestdetail
where date_trunc('month', to_timestamp(executedtime / 1000)) = '2015-10-01'