【问题标题】:Convert a select into hours, minutes, and second in SQL在 SQL 中将 select 转换为小时、分钟和秒
【发布时间】:2021-03-26 13:20:13
【问题描述】:

给定:

INSERT INTO EP_ACCESS (START_TIMESTAMP, DISCONNECT_TIMESTAMP)
VALUES (TO_DATE('2020-01-01 00:00:01','yyyy/mm/dd hh24:mi:ss'), TO_DATE('2020-01-01 00:01:00','yyyy/mm/dd hh24:mi:ss'));

还有:

SELECT SUM(E.Start_timestamp-E.Disconnect_timestamp) AS WATCHING_TIME
FROM EP_ACCESS

如何将所选内容转换为小时、分钟和秒?

【问题讨论】:

  • 这将取决于 START_TIMESTAMP 和 DISCONNECT_TIMESTAMP 的数据类型。它们是日期还是时间戳?
  • @WilliamRobertson - 在提供的示例数据中,它们是 date 数据类型(即使列名包含“时间戳”)。当然,完全有可能OP的真实数据使用了不同的数据类型……

标签: sql oracle time datediff


【解决方案1】:

Oracle 中两个日期的差是一个(可能是小数)数字,以天为单位。如果您需要将其转换为小时、分钟和秒,则结果的最佳数据类型是 interval day to second,您可以通过将数字(查询中的总和)乘以interval '1' day。结果将以天、小时、分钟和秒为单位。

顺便说一句,你确定你的减法是正确的吗?在我看来,您应该从断开连接时间戳中减去开始时间戳 - 但您比我更了解您的问题。

这是一个使用您的“时间戳”(实际上是 Oracle 中的日期)的插图,但差异是正确的。

select sum(disconnect_timestamp - start_timestamp) * interval '1' day as diff
from   ep_access
;

DIFF               
-------------------
+00 00:00:59.000000

结果显示 00 天 00 小时 00 分钟 59.000000 秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多