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.