TO_CHAR konwersja daty/czasu oraz liczb na ciąg znaków char/string w Informix SQL

W Informix SQL za konwersje daty w formacie data, datatime oraz wartości liczbowych na
ciąg znaków służy funkcja TO_CHAR.

Funkcja może być wywołana z jednym, bądź dwoma argumentami.

W przypadku jednego argumentu podajemy tylko konwertowaną wartość, np:

select to_char(2021) from sysdual; -- zamiana typu integer na characters: 2021
select to_char(today) from sysdual; -- zamiana typu date na characters: 28-01-2021

W przypadku wywołania funkcji z dwoma argumentami: pierwszy z nich to wartość którą będziemy konwertować, drugi to docelowy format.
W docelowm formacie wszystkie parametry które wskażemy musimy poprzedzić znakiem procentu: %.

Przykład:

Chcemy dokonać konwersji bieżącej daty na format: YYYY-MM-DD

select to_char(today, '%Y-%m-%d') from sysdual

Dla dzisiejszej daty otrzymamy: 2021-01-28.

Poniżej przedstawiam listę parametrów dopuszczonych do użytku z funkcją to_char.
Wszsytkie wyniki w przykładach zostaną przedstawione dla bieżącej daty i czasu (current – na moment tworzenia wpisu), tj.

28-01-2021 18:21:02

Parametry:

%a – zwraca skróconą nazwę dnia tygodnia

select to_char(current, '%a') from sysdual;

Wynik: CZW

%A – zwraca pełną nazwę dnia tygodnia

select to_char(current, '%A') from sysdual;

Wynik: CZWARTEK

%b – zwraca skróconą nazwę miesiąca

select to_char(current, '%b') from sysdual;

Wynik: STY

%B – zwraca pełną nazwę miesiąca

select to_char(current, '%B') from sysdual;

Wynik: STYCZEŃ

%C – zwraca numer wieku (rok z bierzącej daty jest dzielony przez 100 i do wyniku brana jest tylko wartość całkowita – integer)

select to_char(current, '%C') from sysdual;

Wynik: 20

%Fx – zwraca części ułamkowe sekundy. Zamiast x podajemy ile wartości ułamkowych sekundy chcemy zwrócić, np. F5 dla czasu: 28-01-2021 18:21:02.322411 zwróci nam np: .32241. Maksymalnie możemy zwrócić 6 cyfr.

select to_char(current, '%F3') from sysdual;

Wynik: .000

%d – zwraca dzień miesiąca (01-31). Dla dni 1-9 wartość poprzedzona jest zerem “0”.

select to_char(current, '%d') from sysdual;

Wynik: 28

%D – zwraca datę w postaci: %m/%d/%y

select to_char(current, '%D') from sysdual;

Wynik: 01/28/21

%e – zwraca dzień miesiąca (1-31). Dla dni 1-9 wartość poprzedzona jest spacją.

select to_char(current, '%e') from sysdual;

Wynik: 28

%h – zwraca nazwę miesiąca (to samo co %b)

select to_char(current, '%h') from sysdual;

Wynik: STY

%H – zwraca godziny z podanego czasu (00-24)

select to_char(current, '%H') from sysdual;

Wynik: 18

%I – zwraca godziny z podanego czasu (1-12), I – duża literka i

select to_char(current, '%I') from sysdual;

Wynik: 06

%m – zwraca numer miesiąca

select to_char(current, '%m') from sysdual;

Wynik: 01

%M – zwraca minuty z podanego czasu

select to_char(current, '%M') from sysdual;

Wynik: 21

%R – zwraca godzinę w formacie: %H:%M

select to_char(current, '%R') from sysdual;

Wynik: 18:21

%S – zwraca sekundy z podanego czasu

select to_char(current, '%S') from sysdual;

Wynik: 02

%T – zwraca czas w formacie: %H:%M:%S

select to_char(current, '%T') from sysdual;

Wynik: 18:21:02

%w – zwraca numer dnia tygodnia (0-6). Wartość 0 oznacza niedzielę.

select to_char(current, '%w`') from sysdual;

Wynik: 04

%y – zwraca rok w formacie dwu cyfrowym: YY

select to_char(current, '%y') from sysdual;

Wynik: 21

%Y – zwraca rok w formacie czterocyfrowym: YYYY

select to_char(current, '%Y') from sysdual;

Wynik: 2021