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

Comment fonctionne DATE_FORMAT() dans MariaDB

Dans MariaDB, DATE_FORMAT() est une fonction de date et d'heure intégrée qui formate une date en fonction de la chaîne de format donnée.

Il nécessite deux arguments ; la date et la chaîne de format. Il accepte également un troisième argument facultatif qui vous permet de spécifier les paramètres régionaux.

Syntaxe

La syntaxe ressemble à ceci :

DATE_FORMAT(date, format[, locale])

date est la date, format est la chaîne de format (voir les spécificateurs de format acceptés), et locale est un paramètre régional facultatif à utiliser pour le format renvoyé.

Exemple

Voici un exemple :

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');

Résultat :

+----------------------------------------------------+
| DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') |
+----------------------------------------------------+
| Friday, 25th January 2030                          |
+----------------------------------------------------+

Le voici à nouveau, mais cette fois en utilisant %r pour renvoyer l'heure renvoyée au format 12 heures :

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');

Résultat :

+------------------------------------------+
| DATE_FORMAT('2030-01-25 10:30:45', '%r') |
+------------------------------------------+
| 10:30:45 AM                              |
+------------------------------------------+

Nous pouvons les combiner pour obtenir l'heure et la date :

SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');

Résultat :

+-------------------------------------------------------+
| DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') |
+-------------------------------------------------------+
| 10:30:45 AM Friday, 25th January 2030                 |
+-------------------------------------------------------+

La langue pour les noms de mois, les noms de jours, etc. est déterminée par le lc_time_names variable système. La valeur par défaut est toujours en_US quel que soit le paramètre régional du système. Voici comment voir votre paramètre actuel.

L'argument des paramètres régionaux

À partir de MariaDB 10.3.2, un troisième argument facultatif peut être utilisé pour spécifier les paramètres régionaux. Lorsque cela est spécifié, cela rend la fonction indépendante des paramètres de la session.

SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');

Résultat :

+----------------------------------------------------+
| DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') |
+----------------------------------------------------+
| viernes, 25th enero 2030                           |
+----------------------------------------------------+

Voici d'autres paramètres régionaux :

SELECT 
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
    DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH;

Résultat :

fr_FR: vendredi, 25th janvier 2030
hr_HR: Petak, 25th Siječanj 2030
fr_FR: Jumaat, 25th Januari 2030
th_TH: ศุกร์, 25th มกราคม 2030

Dans ce cas, le dernier est thaï, et bien qu'il utilise des caractères thaï pour le nom du mois et le nom du jour, il ne change pas l'année du calendrier thaï. L'année 2030 serait 2573 lors de l'utilisation du calendrier thaïlandais. Donc je suppose que l'hypothèse est que si vous voulez utiliser l'année thaïlandaise, alors la date que vous passez utilisera déjà l'année thaïlandaise.

Date actuelle

Ici, nous passons NOW() comme argument date afin de formater la date actuelle :

SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');

Résultat :

+---------------------------------------+
| DATE_FORMAT(NOW(), '%r %W, %D %M %Y') |
+---------------------------------------+
| 09:53:00 AM Tuesday, 11th May 2021    |
+---------------------------------------+

Arguments invalides

Lorsqu'un argument invalide est passé, DATE_FORMAT() renvoie null :

SELECT DATE_FORMAT('Homer', 'Simpson');

Résultat :

+---------------------------------+
| DATE_FORMAT('Homer', 'Simpson') |
+---------------------------------+
| NULL                            |
+---------------------------------+

Argument manquant

Appel de DATE_FORMAT() avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :

SELECT DATE_FORMAT();

Résultat :

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Et un autre exemple :

SELECT DATE_FORMAT('2030-05-21');

Résultat :

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Le GET_FORMAT() Fonction

Vous pouvez également utiliser le GET_FORMAT() fonction dans le deuxième argument de DATE_FORMAT() . Cela renvoie la chaîne de format complète pour un format de date donné, ce qui vous évite d'avoir à vous souvenir de la chaîne de format à utiliser.