在SQL中将选择转换为小时、分钟和秒
鉴于:
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
如何将所选内容转换为小时、分钟和秒?
回答
Oracle 中两个日期的差是一个(可能是小数)数字,以天为单位。如果您需要将其转换为小时、分钟和秒,结果的最佳数据类型是间隔天到秒,您可以通过将您的数字(您的总和,在您的查询中)乘以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 秒。