Quella funzione non esiste in Oracle RDMBS; ha funzionato chiaramente in Oracle Lite (che non ho mai incontrato) e credo che sia in altri database come MySQL.
C'è documentazione che copre datetime e intervallo aritmetica che ti porterà parte della strada lì; puoi sottrarre un timestamp da un altro; o una data da un'altra, o un mix dei due, ma è più semplice attenersi a un tipo di dati. A seconda di quale utilizzi, otterrai un intervallo o un numero che rappresenta il numero di giorni:
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
Se vuoi solo il numero di giorni interi puoi usare extract()
per l'intervallo per ottenere solo l'elemento desiderato, oppure trunc()
per il numero rimuovere la parte frazionaria:
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
Potresti anche trunc()
la data corrente prima del confronto, se preferisci, quindi stai confrontando entrambi a mezzanotte, il che significa che non ci sarà una parte del giorno frazionario da rimuovere:
SQL> SELECT TRUNC(CURRENT_DATE) - DATE '1998-12-09' FROM DUAL;
TRUNC(CURRENT_DATE)-DATE'1998-12-09'
------------------------------------
6169
Ho usato valori letterali di data ANSI per la data fissa, ma puoi utilizzare una data esistente o una variabile o una colonna di timestamp; o to_date()
o to_timestamp()
se hai una stringa in un formato diverso.
Puoi anche usare extract()
per convertire i componenti di un intervallo in un valore combinato, come mostrato qui
; e assicurati anche di essere a conoscenza della differenza tra current_date
e sysdate
e gli equivalenti timestamp
.