如何将"1天01:30:00"的间隔转换为"25:30:00"?

Ole*_*Ole 20 postgresql formatting intervals

我需要添加一些间隔并在Excel中使用结果.

以来

sum(time.endtime-time.starttime)
Run Code Online (Sandbox Code Playgroud)

将间隔返回为"1天01:30:00"并且此格式打破了我的Excel工作表,我认为输出像"25:30:00"一样很好但是在PostgreSQL中找不到任何方法文档.

这里有人可以帮帮我吗?

mat*_*mat 21

我唯一可以带来的(除了解析天数和每次增加24小时)是:

mat=> select date_part('epoch', '01 day 1:30:00'::interval);
 date_part 
-----------
     91800
(1 row)
Run Code Online (Sandbox Code Playgroud)

它将为您提供秒数,这对于Excel来说可能没问题.


zar*_*tra 19

由于该主题没有确切的解决方案:

=> SELECT date_part('epoch', INTERVAL '1 day 01:30:00') * INTERVAL '1 second' hours;
  hours
-----------
 25:30:00
(1 row)
Run Code Online (Sandbox Code Playgroud)

资料来源:文件


sli*_*lim 18

您可以使用EXTRACT将间隔转换为秒.

SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
Result: 442800
Run Code Online (Sandbox Code Playgroud)

然后你需要做自己的数学运算(或让Excel做).

请注意,'1天'不一定等于'24小时' - PostgreSQL处理跨越DST转换的间隔.

  • 我不能在这个问题上具有权威性,但似乎Postgres将间隔存储为一组字段,而不仅仅是为显示而转换的整数.根据应用的位置,它将被解释为不同的秒数.强制上下文意味着它必须做出假设. (3认同)

pil*_*row 12

如果你想Postgres的处理HH:MM:SS格式为你,走差异化的新纪元的秒数​​并将其转换为以秒为缩放的时间间隔:

SELECT SUM(EXTRACT(EPOCH FROM time.endtime) - EXTRACT(EPOCH FROM time.starttime))
         * INTERVAL '1 SECOND' AS hhmmss
Run Code Online (Sandbox Code Playgroud)

  • 非常微妙.这会将间隔从天,小时,分钟,秒更改为几秒,之后您可以执行`to_char(xxx,'HH24:MI:SS')`. (2认同)