2013-04-29 3 views
0

У меня есть запрос на выборку, где я взять разницу между двумя отметкамиЭКСТРАКТ час Функция не работает, как ожидалось

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

Функция queuereceived дата также возвращает метку времени. Я могу извлечь дни, используя функцию extract, но не часы.

Пожалуйста, сообщите об этом

+2

, что ваша ошибка? –

+3

«не работает неожиданно» бесполезно. Опишите, что вы ожидаете, и что на самом деле происходит, включая сообщения об ошибках. – APC

+0

@APC "не работает как * un * ожидается"? Это предложение заставляет мой мозг болеть :-) –

ответ

3

Распаковка час, конечно, работает:

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 

Если вы ждете его, чтобы показать общее количество часов, если разница больше, чем один день, то вы не понимаете, что делает extract function, и вам нужно будет вычислить сумму, умножив значение 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 

Конечно, я угадывать, так как вы не объяснили проблему, что вы видите, но так как функция не работает, это единственное, что я могу думать вы имеете в виду ...

+0

Да, разница в часах больше одного дня. Так, например, моя функция «Полученная дата» возвращает дату, которая составляет 3 дня. Мне нужно извлечь часы из этого – Ankit

+0

Что вы подразумеваете под «извлечения часов»? Вы все еще не сказали, что хотите посмотреть. Если вам больше трех дней, вы ожидаете значения 72 (или выше)? На самом деле это не «экстракт», по крайней мере, с точки зрения этой функции. –

+0

Да, я ожидаю увидеть 72 в качестве значения, если точное различие составляет 3 дня. Итак, да, ответ, который вы дали выше, определенно работает – Ankit

Смежные вопросы