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.