首页 > 解决方案 > 微调 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

它在处理多条记录时效率低下,无论如何是否可以微调查询?

标签: oracleextractdayshour

解决方案


两个DATE数据类型值的差异是它们之间的天数。因此,如果您“缩短”要使用的代码NVL(对于 is 的情况latest_timestampNULL并简单地将结果乘以24(以获得小时数),您会得到

select (nvl(latest_timestamp, sysdate) - creation_timestamp)) * 24 as time_in_hours
from some_table

该结果可能应该四舍五入(但这很容易)。

看看有没有帮助。


推荐阅读