两个时间戳之间的差异作为多天的时间戳

时间:2018-02-15 08:38:01

标签: postgresql

我有两个时间戳,我希望得到一个结果与他们之间的差异。我发现了一个类似的问题here,但我注意到了:

select 
 to_char(column1::timestamp - column2::timestamp, 'HH:MS:SS')
from
 table
如果这些时间戳跨越多天,

给我一​​个错误的回报。我知道我可以使用EPOCH来计算小时/天/分钟/秒等的数量,但我的用例需要将结果作为时间戳(或字符串......任何不是间隔!)。

在多天的情况下,我想继续计算小时数,即使它应该超过24小时。这样可以得到如下结果:

36:55:01

1 个答案:

答案 0 :(得分:2)

我将使用内置的 date_part 函数(如之前在较旧的帖子中描述的那样:How to convert an interval like "1 day 01:30:00" into "25:30:00"?)但最终将结果转换为您想要的类型:

SELECT
   from_date,
   to_date,
   to_date - from_date as date_diff_interval,
   (date_part('epoch', to_date - from_date) * INTERVAL '1 second')::text as date_diff_text
from (
   (select
    '2018-01-01 04:03:06'::timestamp as from_date,
    '2018-01-02 16:58:07'::timestamp as to_date)
) as dates;

这导致以下结果:

enter image description here

我目前还没有意识到将此间隔转换为时间戳的方法,也不知道是否有用途。你还在处理一个间隔,你需要一个及时的参考点来将该间隔转换为实际的时间戳。