繁体   English   中英

提取小时功能无法正常工作

[英]EXTRACT Hour Function is not working as expected

我有一个选择查询,我在两个时间戳之间求差

select EXTRACT (HOUR FROM (systimestamp-queuereceiveddate(a,b))) 
  from dual

queuereceived日期函数还返回时间戳。 我可以使用提取功能来提取天数,而不能提取几个小时。

请对此提供意见

提取小时当然可以:

select systimestamp - (systimestamp - 27.5/24) as diff,
    extract(day from systimestamp - (systimestamp - 27.5/24)) as diff_day,
    extract(hour from systimestamp - (systimestamp - 27.5/24)) as diff_hour
from dual;

DIFF                             DIFF_DAY  DIFF_HOUR
------------------------------ ---------- ----------
+000000001 03:30:00.584929              1          3

如果您期望它显示总小时数,如果相差超过一天,那么您会误解提取函数的作用 ,并且您需要将day乘以24并计算出总数将其添加到hour值:

select systimestamp - (systimestamp - 27.5/24) as diff,
    extract(day from systimestamp - (systimestamp - 27.5/24))  * 24
        + extract(hour from systimestamp - (systimestamp - 27.5/24))
        as diff_hour_total
from dual;

DIFF                           DIFF_HOUR_TOTAL
------------------------------ ---------------
+000000001 03:30:00.612830                  27

我想当然是在猜测,因为您还没有解释所遇到的问题,但是由于函数确实起作用,所以这是我能想到的唯一一件事...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM