2015-02-09 17 views
13

Potrzebuję użyć Oracle, ale funkcja DATEDIFF nie działa w Oracle DB.Funkcja DATEDIFF w Oracle

Jak napisać poniższy kod w Oracle? Widziałem kilka przykładów przy użyciu INTERVAL lub TRUNC.

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

możliwie duplikat [Obliczyć różnicę pomiędzy 2 daty/czasu w SQL Oracle] (http://stackoverflow.com/questions/1096853/calculate- różnica-między-2-data-razy-w-oracle-sql) – Jens

Odpowiedz

16

W Oracle, można po prostu odejmować dwie daty i uzyskać różnicę dni. Należy również zauważyć, że w przeciwieństwie do SQL Server lub MySQL, w Oracle nie można wykonać instrukcji select bez klauzuli from. Jednym rozwiązaniem jest użycie wbudowanego obojętne stół dual:

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

Dziękuję za odpowiedź! Wypróbuję to jutro. Mam tylko serwer SQL na moim komputerze. Jeszcze raz dziękuję za poświęcony czas i wyjaśnienie ~ :) – user3601310

3

Możesz po prostu odjąć dwie daty. Trzeba oddać go najpierw, używając to_date:

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

Rezultatem jest w dniach, do różnicy tych dwóch dat jest -1 (można zamienić dwie daty, jeśli chcesz). Jeśli chcesz mieć go w godzinach, po prostu pomnożyć wynik z 24.

+0

Dziękuję za odpowiedź! Wypróbuję to jutro. Mam tylko serwer SQL na moim komputerze. Jeszcze raz dziękuję za poświęcony czas i wyjaśnienie ~ :) – user3601310

4

Wystarczy odjąć dwie daty:

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

Rezultatem będzie różnica w dniach.

Więcej szczegółów w instrukcji:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042

+0

Dziękuję za odpowiedź! Wypróbuję to jutro. Mam tylko serwer SQL na moim komputerze. Jeszcze raz dziękuję za Twój czas w linku ~ :) – user3601310

+1

@ user3601310: co to jest "jutrzejszy coz"? (coz brzmi jak niemieckie słowo "wymiotować" ...) –

+0

Miał na myśli "ponieważ" ... –