微调提取时间和日期

Fine tune EXTRACT HOUR and 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