2017-09-15 4 views
1

effectiveというテーブルがあり、ID、開始時刻、終了時刻があります。PostgreSQLのテーブル内のすべての行の日付差を計算する方法は?

すべての行の日付差を計算します。私は、次の方法のように

select DATE_PART('hour', age(endtime,starttime)) OVER (PARTITION BY id) as increase from effective 

を試みた。しかし、それは私のような結果を望んで次のエラー

ERROR: OVER specified, but date_part is not a window function nor an aggregate function

を示し、

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

'over'節を削除するだけです。 –

+0

私はパーティションを使用しているので、構文に違反しています。 – nmkyuppie

+0

@VamsiPrabhalaは 'OVER'という単語だけでなく、' OVER(PARTITION BY id) 'という節全体を意味するものとします。 –

答えて

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秒、NOT 2時間です。

関連する問題