Ta funkcja nie istnieje w Oracle RDMBS; wyraźnie tak było w Oracle Lite (którego nigdy nie spotkałem) i wierzę, że jest w innych bazach danych, takich jak MySQL.
Istnieje dokumentacja obejmująca arytmetykę daty i godziny oraz przedziałów co zaprowadzi cię na część drogi; możesz odjąć jeden znacznik czasu od drugiego; lub jedna data z innej lub połączenie tych dwóch - ale łatwiej jest trzymać się jednego typu danych. W zależności od tego, którego używasz, otrzymasz interwał lub liczbę reprezentującą liczbę dni:
SQL> SELECT CURRENT_TIMESTAMP - TIMESTAMP '1998-12-09 00:00:00' FROM DUAL;
CURRENT_TIMESTAMP-TIMESTAMP'1998-12-0900:00:00'
---------------------------------------------------------------------------
+000006169 16:16:21.287166000
SQL> SELECT CURRENT_DATE - DATE '1998-12-09' FROM DUAL;
CURRENT_DATE-DATE'1998-12-09'
-----------------------------
6169.67775
Jeśli chcesz tylko liczbę pełnych dni, możesz użyć extract()
dla interwału, aby uzyskać tylko żądany element, lub trunc()
dla liczby, aby usunąć część ułamkową:
SQL> SELECT EXTRACT(DAY FROM CURRENT_TIMESTAMP - TIMESTAMP '1998-12-09 00:00:00') FROM DUAL;
EXTRACT(DAYFROMCURRENT_TIMESTAMP-TIMESTAMP'1998-12-0900:00:00')
---------------------------------------------------------------
6169
SQL> SELECT TRUNC(CURRENT_DATE - DATE '1998-12-09') FROM DUAL;
TRUNC(CURRENT_DATE-DATE'1998-12-09')
------------------------------------
6169
Możesz także trunc()
bieżąca data przed porównaniem, jeśli wolisz, więc porównujesz obie o północy, co oznacza, że nie będzie ułamkowej części dnia do usunięcia:
SQL> SELECT TRUNC(CURRENT_DATE) - DATE '1998-12-09' FROM DUAL;
TRUNC(CURRENT_DATE)-DATE'1998-12-09'
------------------------------------
6169
Użyłem literałów daty ANSI dla ustalonej daty, ale możesz użyć istniejącej zmiennej lub kolumny daty lub sygnatury czasowej; lub to_date()
lub to_timestamp()
jeśli masz ciąg w innym formacie.
Możesz także użyć extract()
aby przekonwertować składniki interwału na łączną wartość, jak pokazano tutaj
; a także upewnij się, że znasz różnicę między current_date
i sysdate
i odpowiedniki sygnatury czasowej
.