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