In MariaDB, TO_CHAR()
is een ingebouwde tekenreeksfunctie die een datum/tijd-uitdrukking omzet in een tekenreeks.
De expressie kan een datum-, datetime-, tijd- of tijdstempelwaarde zijn.
Deze functie is geïntroduceerd in MariaDB 10.6.1 om de compatibiliteit met Oracle te verbeteren.
Syntaxis
De syntaxis gaat als volgt:
TO_CHAR(expr[, fmt])
Waar expr
is een datum, datum/tijd, tijd of tijdstempelwaarde, en fmt
is een optionele opmaakreeks die aangeeft hoe de uitvoer moet worden opgemaakt.
De opmaakreeks kan een van de volgende zijn:
YYYY
YYY
YY
RRRR
RR
MM
MON
MONTH
MI
DD
DY
HH
HH12
HH24
SS
- Speciale tekens
De standaardwaarde is YYYY-MM-DD HH24:MI:SS
.
Voorbeeld
Hier is een voorbeeld om te demonstreren:
SELECT TO_CHAR('2020-01-01');
Resultaat:
+-----------------------+ | TO_CHAR('2020-01-01') | +-----------------------+ | 2020-01-01 00:00:00 | +-----------------------+
Geef een Datetime-waarde door
In dit voorbeeld wordt een datetime-waarde gebruikt:
SELECT TO_CHAR('2022-12-25 10:30:45');
Resultaat:
+--------------------------------+ | TO_CHAR('2022-12-25 10:30:45') | +--------------------------------+ | 2022-12-25 10:30:45 | +--------------------------------+
Geef een opmaakreeks op
Hier is een voorbeeld met een format string:
SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');
Resultaat:
+----------------------------------------------+ | TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') | +----------------------------------------------+ | 2022-12-25 | +----------------------------------------------+
Hier is er nog een:
SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');
Resultaat:
+--------------------------------------------+ | TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') | +--------------------------------------------+ | Sun, 25 December 2022 | +--------------------------------------------+
Numerieke datums
Dit gebeurt er als ik een numerieke datum opgeef:
SELECT TO_CHAR(20200101);
Resultaat:
ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.
Ongeldige datums
Als de datum ongeldig is, TO_CHAR()
retourneert null
met een waarschuwing:
SELECT TO_CHAR('2020-01-51');
Resultaat:
+-----------------------+ | TO_CHAR('2020-01-51') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.001 sec)
Laten we de waarschuwing eens bekijken:
SHOW WARNINGS;
Resultaat:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Ongeldige notatietekenreeks
Als de opmaakreeks ongeldig is, TO_CHAR()
geeft een fout:
SELECT TO_CHAR('2020-01-01', 'wow');
Resultaat:
ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.
Null-opmaaktekenreeks
TO_CHAR()
retourneert null
als de opmaakreeks null
. is :
SELECT TO_CHAR('2020-01-01', null);
Resultaat:
+-----------------------------+ | TO_CHAR('2020-01-01', null) | +-----------------------------+ | NULL | +-----------------------------+
Ongeldig aantal argumenten
Het doorgeven van een ongeldig aantal argumenten (of geen argumenten) resulteert in een fout:
SELECT TO_CHAR();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'