I MariaDB, TO_CHAR()
är en inbyggd strängfunktion som konverterar ett datum/tid-uttryck till en sträng.
Uttrycket kan vara ett datum-, datetime-, tid- eller tidsstämpelvärde.
Denna funktion introducerades i MariaDB 10.6.1 för att förbättra Oracle-kompatibiliteten.
Syntax
Syntaxen ser ut så här:
TO_CHAR(expr[, fmt])
Där expr
är ett datum, datetime, time eller timestamp värde och fmt
är en valfri formatsträng som anger hur utdata ska formateras.
Formatsträngen kan vara något av följande:
YYYY
YYY
YY
RRRR
RR
MM
MON
MONTH
MI
DD
DY
HH
HH12
HH24
SS
- Specialtecken
Standardvärdet är YYYY-MM-DD HH24:MI:SS
.
Exempel
Här är ett exempel att visa:
SELECT TO_CHAR('2020-01-01');
Resultat:
+-----------------------+ | TO_CHAR('2020-01-01') | +-----------------------+ | 2020-01-01 00:00:00 | +-----------------------+
Lämna ett datum/tidsvärde
Det här exemplet använder ett datetime-värde:
SELECT TO_CHAR('2022-12-25 10:30:45');
Resultat:
+--------------------------------+ | TO_CHAR('2022-12-25 10:30:45') | +--------------------------------+ | 2022-12-25 10:30:45 | +--------------------------------+
Ange en formatsträng
Här är ett exempel med en formatsträng:
SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');
Resultat:
+----------------------------------------------+ | TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') | +----------------------------------------------+ | 2022-12-25 | +----------------------------------------------+
Här är en till:
SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');
Resultat:
+--------------------------------------------+ | TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') | +--------------------------------------------+ | Sun, 25 December 2022 | +--------------------------------------------+
Numeriska datum
Så här händer när jag anger ett numeriskt datum:
SELECT TO_CHAR(20200101);
Resultat:
ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.
Ogiltiga datum
Om datumet är ogiltigt, TO_CHAR()
returnerar null
med en varning:
SELECT TO_CHAR('2020-01-51');
Resultat:
+-----------------------+ | TO_CHAR('2020-01-51') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.001 sec)
Låt oss kolla varningen:
SHOW WARNINGS;
Resultat:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Ogiltig formatsträng
Om formatsträngen är ogiltig, TO_CHAR()
returnerar ett fel:
SELECT TO_CHAR('2020-01-01', 'wow');
Resultat:
ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.
Nullformatsträng
TO_CHAR()
returnerar null
om formatsträngen är null
:
SELECT TO_CHAR('2020-01-01', null);
Resultat:
+-----------------------------+ | TO_CHAR('2020-01-01', null) | +-----------------------------+ | NULL | +-----------------------------+
Ogiltigt antal argument
Att skicka ett ogiltigt antal argument (eller inga argument) resulterar i ett fel:
SELECT TO_CHAR();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'