postgresql查询小时分钟和秒

时间:2017-01-01 01:37:52

标签: postgresql

您好我正在使用类似下面的Postgresql查询来计算{1}和{2}的日期时间差异。

CAST(ROUND(EXTRACT(EPOCH from (({2}::timestamp) - ({1}::timestamp)))/60) AS INT)

我想计算显示的小时,分​​钟和秒的差异,如:

  

3小时31分42秒

上面显示需要哪些操作?

2 个答案:

答案 0 :(得分:2)

{{1}}

这是一个sqlfiddle:link

to_char函数占用一个间隔(间隔是两个时间戳之间的时间跨度,减去时间戳会给出一个间隔)。然后它需要格式化,你可以应用你想要的几乎。

Formatting functions in PostgreSQL

答案 1 :(得分:1)

减去两个timestamptimestamptz值会产生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'涵盖了其余部分。默认情况下,结果中没有更多的时间单位。