Potrebujem použiť Oracle, ale funkcia DATEDIFF v Oracle DB nefunguje.
Ako napísať nasledujúci kód v Oracle? Videl som nejaké príklady, ktoré používajú INTERVAL alebo TRUNC.
SELECT DATEDIFF ('2000-01-01','2000-01-02') AS DateDiff;
V systéme Oracle môžete jednoducho odčítať dva dátumy a získať rozdiel v dňoch. Všimnite si tiež, že na rozdiel od SQL Servera alebo MySQL nemôžete v Oracle vykonať príkaz select
bez klauzuly from
. Jedným zo spôsobov, ako to obísť, je použiť zabudovanú fiktívnu tabuľku dual
:
SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') -
TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff
FROM dual
Stačí odčítať dva dátumy:
select date '2000-01-02' - date '2000-01-01' as dateDiff
from dual;
Výsledkom bude rozdiel v dňoch.
Viac informácií nájdete v príručke:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042
Môžete jednoducho odčítať dva dátumy. Najskôr ho musíte prepočítať pomocou príkazu to_date
:
select to_date('2000-01-01', 'yyyy-MM-dd')
- to_date('2000-01-02', 'yyyy-MM-dd')
datediff
from dual
;
Výsledok je v dňoch, pričom rozdiel týchto dvoch dátumov je -1
(ak chcete, môžete tieto dva dátumy vymeniť). Ak by ste to chceli mať v hodinách, stačí výsledok vynásobiť číslom 24.