2012-02-28 3 views
0
このクエリは、連続する行の間の差見つけるための素晴らしい作品

PostgreSQLのフォーマット遅れ列

select id, created_at, created_at - lag(created_at, 1) 
over (order by created_at) as diff 
from fistbumps where bumper_id = 2543 
and created_at between '2012-01-11' and '2012-01-12' order by created_at; 

を...しかし、結果は次のように出てくる次の場合は本当にかっこいいだろう何

id |   created_at   |  diff  
--------+----------------------------+----------------- 
197230 | 2012-01-11 00:04:31.774426 | 
197231 | 2012-01-11 00:04:32.279181 | 00:00:00.504755 
197232 | 2012-01-11 00:04:33.961665 | 00:00:01.682484 
197233 | 2012-01-11 00:04:36.506685 | 00:00:02.54502 

私はdiffカラムを数秒とミリ秒(例えば2.54502)にフォーマットすることができました。私はdate_trunc()とextract()を使ってみましたが、構文を正しく取得できないようです。

答えて

3

created_at - lag(create_at)の結果は、intervalの値です。

あなたはextract(epoch from interval_value)

を使用してintervalの秒だからあなたの場合には、それは次のようになり得ることができます。

extract(epoch from (created_at - lag(created_at, 1))) 
+0

それは秒、ないミリ秒を返します。 – Eelke

+0

@ Eelke:ありがとう、修正されました。 –

関連する問題