Die functie bestaat niet in Oracle RDMBS; het deed het duidelijk in Oracle Lite (wat ik nog nooit ben tegengekomen) en ik geloof dat het in andere databases zoals MySQL is.
Er is documentatie over datetime en interval-rekenkunde die je een deel van de weg daarheen zal brengen; je kunt de ene tijdstempel van de andere aftrekken; of de ene datum van de andere, of een combinatie van beide - maar het is eenvoudiger om bij één gegevenstype te blijven. Afhankelijk van welke u gebruikt, krijgt u een interval of een getal dat het aantal dagen vertegenwoordigt:
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
Als je alleen het aantal hele dagen wilt, kun je trunc()
voor het getal om het breukdeel te verwijderen:
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
U kunt ook trunc()
de huidige datum vóór vergelijking als je wilt, dus je vergelijkt beide om middernacht, wat betekent dat er geen fractioneel dagdeel hoeft te worden verwijderd:
SQL> SELECT TRUNC(CURRENT_DATE) - DATE '1998-12-09' FROM DUAL;
TRUNC(CURRENT_DATE)-DATE'1998-12-09'
------------------------------------
6169
Ik heb ANSI-datumliteralen gebruikt voor de vaste datum, maar u kunt een bestaande datum- of tijdstempelvariabele of kolom gebruiken; of to_date()
of to_timestamp()
als je een string in een ander formaat hebt.
Je kunt ook extract()
. gebruiken om de componenten van een interval om te zetten in een gecombineerde waarde, zoals hier weergegeven
; en zorg er ook voor dat u op de hoogte bent van het verschil tussen current_date
en sysdate
, en de tijdstempelequivalenten
.