嗨我有一個像下面這樣的Postgresql查詢來計算{1}和{2}的DateTime差異在幾分鐘內。postgresql查詢小時分鐘和秒
CAST(ROUND(EXTRACT(EPOCH from (({2}::timestamp) - ({1}::timestamp)))/60) AS INT)
我想計算以小時,分鐘和秒之差顯示如下:
3小時31分鐘42秒
我需要爲顯示像上面怎麼操作?
嗨我有一個像下面這樣的Postgresql查詢來計算{1}和{2}的DateTime差異在幾分鐘內。postgresql查詢小時分鐘和秒
CAST(ROUND(EXTRACT(EPOCH from (({2}::timestamp) - ({1}::timestamp)))/60) AS INT)
我想計算以小時,分鐘和秒之差顯示如下:
3小時31分鐘42秒
我需要爲顯示像上面怎麼操作?
SELECT to_char((col1 - col0), 'HH24 hrs MI "minutes" SS "seconds"') FROM T1;
這裏是一個sqlfiddle:link
TO_CHAR函數需要的間隔(間隔是兩個時間戳之間的時間間隔,並減去時間戳給你的間隔)。然後它需要一個格式化,你可以應用你想要的東西。
減去*日期*會給你一個'nteger'(中間的天數)。減去*時間戳*會產生一個「間隔」,它永遠不會被稱爲「日期間隔」。 –
timestamp
2個或timestamptz
值的減法產生interval
。 (雖然減去2個date
值產生integer
!)
Details about date/time types in the manual.
一個interval
的默認文本表示可能是足夠的:
SELECT timestamp '2017-1-6 12:34:56' - timestamp '2017-1-1 0:0';
結果是一個interval
,顯示爲:
5 days 12:34:56
如果您需要問題中的格式,則需要指定如何處理> = 24 ho URS。添加'天'?或者相應地增加小時數?
@Nobody provided如何使用to_char()
。但添加天的一種方式或其他:
SELECT to_char(ts_col2 - ts_col1, 'DD" days "HH24" hours "MI" minutes "SS" seconds"');
結果:
05 days 12 hours 34 minutes 56 seconds
'天'覆蓋休息。默認情況下,結果中沒有更多的時間單位。
是否可能存在≥24小時的時差?另外,請提供源列的準確數據類型以及您的Postgres版本。沒有它,這個問題就模糊不清。 –