MySQL DATE_FORMAT expliqué : formater les dates et heures avec des exemples

1. Introduction

Dans les bases de données MySQL, vous manipulerez fréquemment des données de date et d’heure. Les dates stockées dans une base sont enregistrées dans des formats standards, mais lors de leur affichage aux utilisateurs, vous souhaitez souvent les reformater pour une meilleure lisibilité. C’est là que la fonction DATE_FORMAT devient utile. Dans cet article, nous présenterons comment utiliser la fonction DATE_FORMAT et les différentes options de formatage, ainsi que des façons pratiques de l’appliquer à travers des exemples concrets.

2. Aperçu de la fonction DATE_FORMAT

2.1 Qu’est‑ce que la fonction DATE_FORMAT ?

La fonction DATE_FORMAT est une fonction MySQL utilisée pour convertir des données de date en un format spécifié. Elle sert lorsqu’on veut afficher les dates dans un format arbitraire plutôt que le format par défaut AAAA‑MM‑JJ ou le format datetime standard. Par exemple, si vous souhaitez présenter une date aux utilisateurs sous la forme « Sep 16, 2024 », cette fonction est très pratique.

2.2 Syntaxe de base

La syntaxe de base de la fonction DATE_FORMAT est la suivante.

DATE_FORMAT(date, format)
  • date : La donnée de date que vous voulez formater.
  • format : Une chaîne qui spécifie le format de sortie de la date.

Voyons un exemple concret :

SELECT DATE_FORMAT('2024-09-16', '%Y-%m-%d') AS formatted_date;

Cette requête convertit la date « 2024-09-16 » en le format « 2024-09-16 » et l’affiche.

3. Paramètres de format de date

3.1 Liste des spécificateurs de format

La fonction DATE_FORMAT prend en charge de nombreux spécificateurs de format. Voici une liste de ceux les plus couramment utilisés :

  • %Y : Année sur 4 chiffres (ex. 2024)
  • %y : Année sur 2 chiffres (ex. 24)
  • %m : Mois sur 2 chiffres (01 à 12)
  • %c : Mois (1 à 12)
  • %d : Jour sur 2 chiffres (01 à 31)
  • %e : Jour (1 à 31)
  • %H : Heure au format 24 h (00 à 23)
  • %h ou %I : Heure au format 12 h (01 à 12)
  • %i : Minutes (00 à 59)
  • %s : Secondes (00 à 59)
  • %p : AM ou PM

3.2 Exemples concrets

Voyons comment ces spécificateurs influencent le résultat.

SELECT 
    DATE_FORMAT('2024-09-16 14:35:59', '%Y-%m-%d %H:%i:%s') AS full_format,
    DATE_FORMAT('2024-09-16 14:35:59', '%b %d, %Y') AS us_format,
    DATE_FORMAT('2024-09-16 14:35:59', '%d/%m/%Y') AS european_format,
    DATE_FORMAT('2024-09-16 14:35:59', '%h:%i %p') AS twelve_hour_format;

Le résultat de cette requête sera le suivant :

  • full_format : 2024-09-16 14:35:59
  • us_format : Sep 16, 2024
  • european_format : 16/09/2024
  • twelve_hour_format : 02:35 PM

4. Cas d’utilisation pratiques

4.1 Scénario 1 : Génération de rapports

Par exemple, lors de la génération de rapports mensuels dans une entreprise, vous pouvez vouloir afficher les dates au format « YYYY‑MM ». La requête suivante formate les dates de rapport à cet effet.

SELECT 
    DATE_FORMAT(sale_date, '%Y-%m') AS report_month,
    SUM(sales) AS total_sales
FROM sales_data
GROUP BY report_month;

Cette requête renvoie le total des ventes mensuelles à partir des données de ventes sous la forme « 2024-09 ».

4.2 Scénario 2 : Interface utilisateur

DATE_FORMAT est également utile lorsque vous souhaitez afficher clairement les dates aux utilisateurs d’une application web. Par exemple, vous pouvez l’utiliser ainsi pour afficher la date de dernière connexion sur la page de profil d’un utilisateur.

SELECT 
    user_name,
    DATE_FORMAT(last_login, '%Y-%m-%d %H:%i') AS last_login_formatted
FROM users;

Cela affichera la date et l’heure de la dernière connexion de l’utilisateur sous la forme « 2024-09-16 14:35 ».

4.3 Scénario 3 : Optimisation de requêtes

Dans certains cas, DATE_FORMAT peut aussi être utile pour l’optimisation des requêtes. Par exemple, vous pouvez formater les dates lors de l’extraction de données dans une plage de dates précise.

SELECT 
    *
FROM transactions
WHERE DATE_FORMAT(transaction_date, '%Y-%m') = '2024-09';

Cette requête extrait toutes les transactions survenues en septembre 2024.

5. Remarques et bonnes pratiques pour DATE_FORMAT

5.1 Considérations de performance

If you use DATE_FORMAT frequently, it may affect performance. In particular, repeatedly applying it to large datasets can increase processing time. If needed, consider storing pre-formatted dates in advance or formatting them at the application level.

5.2 Localisation

When building a multilingual system using DATE_FORMAT, you must pay attention to localization. Since date display formats vary by country and region, you may need to dynamically change formats based on the user’s locale.

5.3 Formatage cohérent

Using consistent date formats across an entire system is essential for improving the user experience. For example, by using the same format in input forms, display sections, and reports, you can avoid confusing users.

6. Résumé

The DATE_FORMAT function is a powerful tool for formatting date data flexibly in MySQL. In this article, we covered basic usage, practical examples, and important notes and best practices. By using this function effectively, you can display dates in a way that is clearer and more user-friendly. As a next step, we recommend learning more advanced date and time operations.

7. Ressources de référence

We hope this article helps you understand and effectively use the DATE_FORMAT function.