Функция DATEDIFF в Oracle

Мне нужно использовать Oracle, но функция DATEDIFF не работает в Oracle DB.

Как написать следующий код в Oracle? Я видел несколько примеров использования INTERVAL или TRUNC.

SELECT DATEDIFF ('2000-01-01','2000-01-02') AS DateDiff;

3 ответов


в Oracle, вы можете просто вычесть две даты и получить разницу в дней. Также обратите внимание, что в отличие от SQL Server или MySQL, в Oracle вы не можете выполнить select заявление без from предложения. Один из способов обойти это-использовать встроенную фиктивную таблицу,dual:

SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') -  
       TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff
FROM   dual

просто вычесть две даты:

select date '2000-01-02' - date '2000-01-01' as dateDiff
from dual;

результатом будет разница в днях.

больше деталей в manual:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042


вы можете просто вычесть две даты. Сначала вы должны бросить его, используя to_date:

select to_date('2000-01-01', 'yyyy-MM-dd')
       - to_date('2000-01-02', 'yyyy-MM-dd')
       datediff
from   dual
;

результат в днях, к разнице этих двух дат -1 (вы можете поменять местами две даты, если хотите). Если вы хотите иметь его в часах, просто умножьте результат на 24.