Oracle
 sql >> Database >  >> RDS >> Oracle

Come ottenere la data corrente in Oracle

Problema:

Vuoi ottenere la data corrente (senza l'ora) in Oracle.

Soluzione 1 (se non ti dispiacciono gli zeri come ora):

SELECT
  TRUNC(CURRENT_DATE) AS current_date
FROM dual;

Ad esempio, se dovessi eseguire questa query il 16 giugno 2021, la tabella dei risultati sarebbe simile a questa:

data_corrente
2021-06-16T00:00:00Z

Discussione:

Oracle non dispone di un tipo di dati che memorizza solo la data senza l'ora. Ma se non ti dispiace gli zeri al posto dell'ora, puoi semplicemente memorizzare una data in un DATE datatype (che memorizza sia la data che l'ora in Oracle). Per ottenere la data e l'ora correnti come DATE valore, puoi semplicemente usare CURRENT_DATE . Per eliminare l'ora (e avere invece degli zeri), è necessario troncare la data:

SELECT
  TRUNC(CURRENT_DATE) AS current_date
FROM dual;

Soluzione 2 (se vuoi solo la data e non gli zeri al posto dell'ora):

SELECT
  TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date
FROM dual;

Ad esempio, se dovessi eseguire questa query il 16 giugno 2021, la tabella dei risultati sarebbe simile a questa:

data_corrente
16-06-2021

Discussione:

Per ottenere un testo di VARCHAR2 tipo che memorizza una data, puoi usare TO_CHAR() funzione in Oracle. È necessario specificare la data/ora da convertire come primo argomento e nel formato in cui si desidera memorizzare la data come secondo argomento.

Poiché vuoi la data corrente, il primo argomento è CURRENT_DATE . Il secondo argomento è la tua scelta. Ad esempio, 'yyyy-MM-dd' sta per 'anno-mese-giorno', dove il mese è numerico anziché testo. La tabella seguente presenta alcuni formati di data di esempio e il rispettivo output per la data 16 giugno 2021.

formato data risultato
'AAAA-MM-GG' 16-06-2021
'AAAA/MM/GG' 16/06/2021
'AAAA MM GG' 2021 06 16
'GG-LUN-AAAA' 16-GIU-2021
'GG-LUN-AA' 16-JUN-21
'FMMese GG, AAAA' 16 giugno 2021

Puoi leggere ulteriori informazioni sui formati della data qui.