W MariaDB, TO_CHAR()
jest wbudowaną funkcją ciągu, która konwertuje wyrażenie daty/czasu na ciąg.
Wyrażenie może być wartością daty, daty i godziny, godziny lub znacznika czasu.
Ta funkcja została wprowadzona w MariaDB 10.6.1 w celu zwiększenia zgodności z Oracle.
Składnia
Składnia wygląda tak:
TO_CHAR(expr[, fmt])
Gdzie expr
jest wartością daty, daty i godziny, czasu lub znacznika czasu oraz fmt
jest opcjonalnym ciągiem formatu, który określa sposób formatowania danych wyjściowych.
Ciąg formatu może być jednym z następujących:
YYYY
YYYY
YY
YYYY
YY
MM
MON
MONTH
MI
DD
DY
HH
HH12
HH24
SS
- Znaki specjalne
Wartość domyślna to YYYY-MM-DD HH24:MI:SS
.
Przykład
Oto przykład do zademonstrowania:
SELECT TO_CHAR('2020-01-01');
Wynik:
+-----------------------+ | TO_CHAR('2020-01-01') | +-----------------------+ | 2020-01-01 00:00:00 | +-----------------------+
Przekaż wartość daty i godziny
W tym przykładzie użyto wartości daty i godziny:
SELECT TO_CHAR('2022-12-25 10:30:45');
Wynik:
+--------------------------------+ | TO_CHAR('2022-12-25 10:30:45') | +--------------------------------+ | 2022-12-25 10:30:45 | +--------------------------------+
Określ ciąg formatu
Oto przykład z ciągiem formatu:
SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');
Wynik:
+----------------------------------------------+ | TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') | +----------------------------------------------+ | 2022-12-25 | +----------------------------------------------+
Oto kolejny:
SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');
Wynik:
+--------------------------------------------+ | TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') | +--------------------------------------------+ | Sun, 25 December 2022 | +--------------------------------------------+
Daty numeryczne
Oto, co się dzieje, gdy podam datę liczbową:
SELECT TO_CHAR(20200101);
Wynik:
ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.
Nieprawidłowe daty
Jeśli data jest nieprawidłowa, TO_CHAR()
zwraca null
z ostrzeżeniem:
SELECT TO_CHAR('2020-01-51');
Wynik:
+-----------------------+ | TO_CHAR('2020-01-51') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.001 sec)
Sprawdźmy ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Nieprawidłowy ciąg formatujący
Jeśli ciąg formatu jest nieprawidłowy, TO_CHAR()
zwraca błąd:
SELECT TO_CHAR('2020-01-01', 'wow');
Wynik:
ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.
Ciąg formatu pustego
TO_CHAR()
zwraca null
jeśli ciąg formatu to null
:
SELECT TO_CHAR('2020-01-01', null);
Wynik:
+-----------------------------+ | TO_CHAR('2020-01-01', null) | +-----------------------------+ | NULL | +-----------------------------+
Nieprawidłowa liczba argumentów
Przekazanie nieprawidłowej liczby argumentów (lub brak argumentów) skutkuje błędem:
SELECT TO_CHAR();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'