如何解决微调 EXTRACT HOUR 和 DAY
我有一个逻辑,按照下面的查询从时间戳中提取天数并以小时为单位。
CASE WHEN LATEST_TIMESTAMP IS NULL
THEN
EXTRACT (HOUR FROM (SYSDATE - CREATION_TIMESTAMP)) + EXTRACT (DAY FROM (SYSDATE -
CREATION_TIMESTAMP)) * 24
ELSE
EXTRACT (HOUR FROM (LATEST_TIMESTAMP - CREATION_TIMESTAMP)) + EXTRACT (DAY FROM
(LATEST_TIMESTAMP - CREATION_TIMESTAMP)) * 24
END
AS TIME_IN_HOURS
处理多条记录时效率低下,无论如何是否可以微调查询?
解决方法
两个 DATE
数据类型值的差异是它们之间的天数。因此,如果您“缩短”您的代码以使用 NVL
(对于 latest_timestamp
为 NULL
的情况)并简单地将该结果乘以 24
(以获得小时数) ,你会得到
select (nvl(latest_timestamp,sysdate) - creation_timestamp)) * 24 as time_in_hours
from some_table
该结果可能应该四舍五入(但这很容易)。
看看是否有帮助。
,NVL 和 Extract 的组合解决方案
select EXTRACT (DAY FROM(nvl(latest_timestamp,sysdate) - creation_timestamp)) * 24) as time_in_hours from some_table
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。