Dans MariaDB, TO_CHAR()
est une fonction de chaîne intégrée qui convertit une expression date/heure en chaîne.
L'expression peut être une valeur de date, de date/heure, d'heure ou d'horodatage.
Cette fonction a été introduite dans MariaDB 10.6.1 pour améliorer la compatibilité Oracle.
Syntaxe
La syntaxe ressemble à ceci :
TO_CHAR(expr[, fmt])
Où expr
est une valeur de date, date-heure, heure ou horodatage, et fmt
est une chaîne de format facultative qui spécifie comment la sortie doit être formatée.
La chaîne de format peut être l'une des suivantes :
YYYY
YYYY
YY
RRRR
RR
MM
MON
MONTH
MI
DD
DY
HH
HH12
HH24
SS
- Caractères spéciaux
La valeur par défaut est YYYY-MM-DD HH24:MI:SS
.
Exemple
Voici un exemple pour illustrer :
SELECT TO_CHAR('2020-01-01');
Résultat :
+-----------------------+ | TO_CHAR('2020-01-01') | +-----------------------+ | 2020-01-01 00:00:00 | +-----------------------+
Passer une valeur DateHeure
Cet exemple utilise une valeur datetime :
SELECT TO_CHAR('2022-12-25 10:30:45');
Résultat :
+--------------------------------+ | TO_CHAR('2022-12-25 10:30:45') | +--------------------------------+ | 2022-12-25 10:30:45 | +--------------------------------+
Spécifier une chaîne de format
Voici un exemple avec une chaîne de format :
SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');
Résultat :
+----------------------------------------------+ | TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') | +----------------------------------------------+ | 2022-12-25 | +----------------------------------------------+
En voici une autre :
SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');
Résultat :
+--------------------------------------------+ | TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') | +--------------------------------------------+ | Sun, 25 December 2022 | +--------------------------------------------+
Dates numériques
Voici ce qui se passe lorsque je fournis une date numérique :
SELECT TO_CHAR(20200101);
Résultat :
ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.
Dates invalides
Si la date n'est pas valide, TO_CHAR()
renvoie null
avec un avertissement :
SELECT TO_CHAR('2020-01-51');
Résultat :
+-----------------------+ | TO_CHAR('2020-01-51') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.001 sec)
Vérifions l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Chaîne de format non valide
Si la chaîne de format n'est pas valide, TO_CHAR()
renvoie une erreur :
SELECT TO_CHAR('2020-01-01', 'wow');
Résultat :
ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.
Chaîne de format nulle
TO_CHAR()
renvoie null
si la chaîne de format est null
:
SELECT TO_CHAR('2020-01-01', null);
Résultat :
+-----------------------------+ | TO_CHAR('2020-01-01', null) | +-----------------------------+ | NULL | +-----------------------------+
Nombre d'arguments invalide
Passer un nombre d'arguments invalide (ou aucun argument) entraîne une erreur :
SELECT TO_CHAR();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'