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])
Où 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.