Problém:
Chcete získat aktuální datum (bez času) v Oracle.
Řešení 1 (pokud vám nevadí nuly jako čas):
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Pokud byste například spustili tento dotaz 16. června 2021, výsledná tabulka by vypadala takto:
current_date |
---|
2021-06-16T00:00:00Z |
Diskuse:
Oracle nemá datový typ, který ukládá pouze datum bez času. Ale pokud vám nevadí nuly na místě času, můžete jednoduše uložit datum do DATE
datový typ (který ukládá datum i čas v Oracle). Chcete-li získat aktuální datum a čas jako DATE
hodnotu, můžete jednoduše použít CURRENT_DATE
. Chcete-li se zbavit času (a mít místo toho nuly), musíte zkrátit datum:
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Řešení 2 (pokud chcete místo času jen datum a ne nuly):
SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date FROM dual;
Pokud byste například spustili tento dotaz 16. června 2021, výsledná tabulka by vypadala takto:
current_date |
---|
2021-06-16 |
Diskuse:
Chcete-li získat text VARCHAR2
typu, který ukládá datum, můžete použít TO_CHAR()
funkce v Oracle. Jako první argument musíte zadat datum/čas, který se má převést, a ve formátu, ve kterém chcete datum uložit jako druhý argument.
Protože chcete aktuální datum, první argument je CURRENT_DATE
. Druhý argument je vaše volba. Například 'yyyy-MM-dd'
znamená 'rok-měsíc-den', kde měsíc je číselný spíše než text. Níže uvedená tabulka uvádí některé příklady formátů data a příslušný výstup pro datum 16. června 2021.
formát data | výsledek |
---|---|
'RRRR-MM-DD' | 2021-06-16 |
'RRRR/MM/DD' | 16. 6. 2021 |
'YYYY MM DD' | 2021 06 16 |
'DD-MON-YYYY' | 16. června 2021 |
'DD-MON-YY' | 16-JUN-21 |
'FMMonth DD, YYYY' | 16. června 2021 |
Více o formátech data si můžete přečíst zde.