微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

微调 EXTRACT HOUR 和 DAY

如何解决微调 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_timestampNULL 的情况)并简单地将该结果乘以 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 举报,一经查实,本站将立刻删除。