TO_CHAR formatowanie/parametry daty w Oracle SQL

Funkcja TO_CHAR służy do konwersji daty bądź liczby do postaci ciągu tekstowego (string).

Wywołanie funkcji wygląda następująco:

SELECT TO_CHAR('data/czas', 'format') FROM NAZWA_TABELI;

W poniższych przykładach posłużymy się wynikiem funkcji CURRENT_TIMESTAMP, która zwraca aktualną datę oraz czas, np:

SELECT CURRENT_TIMESTAMP FROM DUAL; -- 2017-01-31 11:11:10

YEAR– zwraca rok słownie, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YEAR') FROM DUAL; -- TWENTY SEVENTEEN

YYYY – zwraca rok w postaci YYYY, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY') FROM DUAL; -- 2017

YYY, YY, Y – zwraca rok w postaci YYY, YY, lub Y, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YY') FROM DUAL; -- 17

IYYY – rok wg. standardu ISO, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'IYYY') FROM DUAL; -- 2017

Q – zwraca numer kwartału, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'Q') FROM DUAL; -- 1

MM – zwraca numer miesiąca (01..12), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'MM') FROM DUAL; -- 01

MON – zwraca skróconą nazwę miesiąca, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'MON') FROM DUAL; -- STY

RM – zwraca rzymską wartość numeru miesiąca (I..XII), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'RM') FROM DUAL; -- I

WW – zwraca numer tygodnia (1..53), gdzie pierwszy tydzień rozpoczyna się w pierwszym dniu roku i trwa do siódmego dnia roku, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'WW') FROM DUAL; -- 05

W – zwraca numer tygodnia (1..5), gdzie pierwszy tydzień rozpoczyna się w pierwszym dniu miesiąca i kończy siódmego dnia miesiąca, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'W') FROM DUAL; -- 5

IW – zwraca numer tygodnia w roku (1..52 lub 1..53) wg. standardu ISO, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'IW') FROM DUAL; -- 05

D – zwraca numer dnia tygodnia (poniedziałek = 1, niedziela=7), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'D') FROM DUAL; -- 2

DAY – zwraca nazwę dnia tygodnia, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'DAY') FROM DUAL; -- WTOREK

DD – zwraca dzień miesiąca (1..31), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'D') FROM DUAL; -- 31

DDD – zwraca dzień roku (1..366), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'DDD') FROM DUAL; -- 031

DY – skrócona nazwa dnia tygodnia, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'DY') FROM DUAL; -- WT

J – zwraca liczbę dni, która upłynęła od 1 stycznia roku 4713 p.n.e. (data juliańska), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'J') FROM DUAL; -- 2457785

HH – zwraca godzinę dla podanego czasu (01..12), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'HH') FROM DUAL; -- 31

HH12 – zwraca godzinę dla podanego czasu (01..12), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'HH12') FROM DUAL; -- 31

HH24 – zwraca godzinę dla podanego czasu (01..24), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'HH24') FROM DUAL; -- 31

MI – liczba minut dla podanego czasu (00..59), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'MI') FROM DUAL; -- 31

SS – liczba sekund dla podanego czasu (00..59), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'SS') FROM DUAL; -- 31

SSSSS – liczba sekund od północy (0-86399), np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'SSSSS') FROM DUAL; -- 40421

FF – zwraca milisekundy, np:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'FF') FROM DUAL; -- 017485