我正在尝试编写查询来获取特定月份的值。我遇到日期转换问题,其中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'
答案 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'