Problem:
Chcesz uzyskać aktualną datę (bez czasu) w Oracle.
Rozwiązanie 1 (jeśli nie przeszkadzają ci zera jako czas):
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Na przykład, jeśli chcesz uruchomić to zapytanie 16 czerwca 2021 r., tabela wynikowa wyglądałaby tak:
aktualna_data |
---|
2021-06-16T00:00:00Z |
Dyskusja:
Oracle nie ma typu danych, który przechowuje tylko datę bez czasu. Ale jeśli nie masz nic przeciwko zerom zamiast czasu, możesz po prostu zapisać datę w DATE
typ danych (który przechowuje zarówno datę, jak i godzinę w Oracle). Aby uzyskać aktualną datę i godzinę jako DATE
wartość, możesz po prostu użyć CURRENT_DATE
. Aby pozbyć się czasu (i zamiast tego mieć zera), musisz skrócić datę:
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Rozwiązanie 2 (jeśli chcesz tylko datę, a nie zera zamiast godziny):
SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date FROM dual;
Na przykład, jeśli chcesz uruchomić to zapytanie 16 czerwca 2021 r., tabela wynikowa wyglądałaby tak:
aktualna_data |
---|
2021-06-16 |
Dyskusja:
Aby uzyskać tekst VARCHAR2
typ przechowujący datę, możesz użyć TO_CHAR()
funkcja w Oracle. Musisz określić znacznik daty/czasu do przekonwertowania jako pierwszy argument oraz w formacie, w którym chcesz przechowywać datę jako drugi argument.
Ponieważ chcesz aktualną datę, pierwszym argumentem jest CURRENT_DATE
. Drugi argument to twój wybór. Na przykład 'yyyy-MM-dd'
oznacza „rok-miesiąc-dzień”, gdzie miesiąc jest liczbowy, a nie tekstowy. Poniższa tabela przedstawia przykładowe formaty daty i odpowiednie dane wyjściowe dla daty 16 czerwca 2021 r.
format daty | wynik |
---|---|
'RRRR-MM-DD' | 2021-06-16 |
'RRRR/MM/DD' | 2021/06/16 |
'RRRR MM DD' | 2021 06 16 |
'DD-PON-RRRR' | 16-CZE-2021 |
'DD-PON-RR' | 16-CZE-21 |
'MFMiesiąc DD, RRRR' | 16 czerwca 2021 |
Możesz przeczytać więcej o formatach dat tutaj.