如何计算PostgreSQL中表中所有行的日期差异?

时间:2017-09-15 14:28:45

标签: sql database postgresql

我有一个名为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

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小时。