我有一个名为effective
的表,它有id,开始时间,结束时间。
我想计算所有行的日期差异。我尝试过以下方法,
select DATE_PART('hour', age(endtime,starttime )) OVER (PARTITION BY id) as increase from effective
但它显示以下错误
错误:OVER指定,但date_part不是窗口函数,也不是聚合函数
我想要一个像
这样的结果id || starttime || endtime || hour
1 || '2017-09-15 14:50:39.312' || '2017-09-15 16:50:34.349' || 2
2 || '2017-09-15 14:50:34.349' || '2017-09-15 15:55:48.894319' || 1
答案 0 :(得分:2)
使用date_part
并减去时间。
SELECT id, starttime, endtime, date_part('hour',endtime-starttime) AS hour
FROM effective
输出
id starttime endtime hour
1 2017-09-15T14:50:39Z 2017-09-15T16:50:34Z 1
2 2017-09-15T14:50:34Z 2017-09-15T15:55:48Z 1
SQL小提琴:http://sqlfiddle.com/#!15/916ac9/2/0
ID 1开始结束只有1小时59分55秒,而不是2小时。