MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment TO_CHAR() fonctionne dans MariaDB

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])

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'