V MariaDB, TO_CHAR()
je vestavěná funkce řetězce, která převádí výraz data/času na řetězec.
Výraz může být datum, datum a čas, čas nebo hodnota časového razítka.
Tato funkce byla představena v MariaDB 10.6.1 za účelem zlepšení kompatibility Oracle.
Syntaxe
Syntaxe vypadá takto:
TO_CHAR(expr[, fmt])
Kde expr
je hodnota data, data a času, času nebo časového razítka a fmt
je volitelný formátovací řetězec, který určuje, jak má být výstup formátován.
Formátovací řetězec může být kterýkoli z následujících:
YYYY
YYY
YY
RRRR
RR
MM
MON
MONTH
MI
DD
DY
HH
HH12
HH24
SS
- Speciální znaky
Výchozí hodnota je YYYY-MM-DD HH24:MI:SS
.
Příklad
Zde je příklad k demonstraci:
SELECT TO_CHAR('2020-01-01');
Výsledek:
+-----------------------+ | TO_CHAR('2020-01-01') | +-----------------------+ | 2020-01-01 00:00:00 | +-----------------------+
Předejte hodnotu data a času
Tento příklad používá hodnotu datetime:
SELECT TO_CHAR('2022-12-25 10:30:45');
Výsledek:
+--------------------------------+ | TO_CHAR('2022-12-25 10:30:45') | +--------------------------------+ | 2022-12-25 10:30:45 | +--------------------------------+
Zadejte formátovací řetězec
Zde je příklad s formátovacím řetězcem:
SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');
Výsledek:
+----------------------------------------------+ | TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') | +----------------------------------------------+ | 2022-12-25 | +----------------------------------------------+
Tady je další:
SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');
Výsledek:
+--------------------------------------------+ | TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') | +--------------------------------------------+ | Sun, 25 December 2022 | +--------------------------------------------+
Číselná data
Když poskytnu číselné datum, stane se toto:
SELECT TO_CHAR(20200101);
Výsledek:
ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.
Neplatná data
Pokud je datum neplatné, TO_CHAR()
vrátí null
s varováním:
SELECT TO_CHAR('2020-01-51');
Výsledek:
+-----------------------+ | TO_CHAR('2020-01-51') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.001 sec)
Podívejme se na varování:
SHOW WARNINGS;
Výsledek:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Neplatný formátovací řetězec
Pokud je formátovací řetězec neplatný, TO_CHAR()
vrátí chybu:
SELECT TO_CHAR('2020-01-01', 'wow');
Výsledek:
ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.
Řetězec formátu Null
TO_CHAR()
vrátí null
pokud je formátovací řetězec null
:
SELECT TO_CHAR('2020-01-01', null);
Výsledek:
+-----------------------------+ | TO_CHAR('2020-01-01', null) | +-----------------------------+ | NULL | +-----------------------------+
Neplatný počet argumentů
Předání neplatného počtu argumentů (nebo žádných argumentů) má za následek chybu:
SELECT TO_CHAR();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'