当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《如何将"1天01:30:00"的间隔转换为"25:30:00"?》经验,为你挑选了4个好方法。

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

以来

sum(time.endtime-time.starttime)

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

这里有人可以帮帮我吗?



1> mat..:

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

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

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



2> zaratustra..:

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

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

资料来源:文件



3> slim..:

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

SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
Result: 442800

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

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


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

4> pilcrow..:

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

SELECT SUM(EXTRACT(EPOCH FROM time.endtime) - EXTRACT(EPOCH FROM time.starttime))
         * INTERVAL '1 SECOND' AS hhmmss


非常微妙.这会将间隔从天,小时,分钟,秒更改为几秒,之后您可以执行`to_char(xxx,'HH24:MI:SS')`.
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有