您好我正在使用类似下面的Postgresql查询来计算{1}和{2}的日期时间差异。
CAST(ROUND(EXTRACT(EPOCH from (({2}::timestamp) - ({1}::timestamp)))/60) AS INT)
我想计算显示的小时,分钟和秒的差异,如:
3小时31分42秒
上面显示需要哪些操作?
答案 0 :(得分:2)
答案 1 :(得分:1)
减去两个timestamp
或timestamptz
值会产生interval
。 (减去两个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小时。添加'天'?或者只是相应地增加小时数?
@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
'days'涵盖了其余部分。默认情况下,结果中没有更多的时间单位。