🧚 Écoute ! Beekeeper Studio est une interface de base de données rapide, moderne et open source Télécharger
14 janvier 2026 Par Matthew Rathbone

Formater une date, c’est la transformer en texte selon la mise en forme de ton choix, comme 03/15/2026 ou Thursday, January 15. Chaque base de données a sa propre fonction pour ça, et les exemples couvrent PostgreSQL, MySQL, SQLite et SQL Server.

Comment formater des dates en SQL

Passe à la fonction une date et une chaîne de format. Les codes de la chaîne de format représentent des parties de la date, et tout le reste est recopié tel quel. Dans SQLite, la fonction s’appelle strftime(), et ses codes commencent par % :

strftime(format, date)
SELECT strftime('%m/%d/%Y', '2026-03-15');
-- Output: 03/15/2026

SELECT strftime('%I:%M %p', '2026-03-15 14:30:00');
-- Output: 02:30 PM

Sur une colonne, la même date peut sortir dans autant de formats que nécessaire :

-- Input: orders
-- order_id | order_date
-- ---------+--------------------
-- 1        | 2026-01-15 09:42:00
-- 2        | 2026-03-02 16:05:00

SELECT
  order_date,
  strftime('%Y-%m-%d', order_date) AS iso_date,
  strftime('%m/%d/%Y', order_date) AS us_date,
  strftime('%d/%m/%Y', order_date) AS european_date
FROM orders;

-- Output:
-- order_date          | iso_date   | us_date    | european_date
-- --------------------+------------+------------+--------------
-- 2026-01-15 09:42:00 | 2026-01-15 | 01/15/2026 | 15/01/2026
-- 2026-03-02 16:05:00 | 2026-03-02 | 03/02/2026 | 02/03/2026

Voici les codes que tu utiliseras le plus, avec le résultat de chacun pour 2026-03-15 14:30:45 :

Code Signification Exemple
%Y Année sur 4 chiffres 2026
%m Mois (01-12) 03
%d Jour du mois (01-31) 15
%H Heure, format 24 h (00-23) 14
%I Heure, format 12 h (01-12) 02
%p AM ou PM PM
%M Minute (00-59) 30
%S Seconde (00-59) 45
%w Jour de la semaine (0-6, dimanche = 0) 0

Règles à connaître

  • SQLite n’a pas de codes pour les noms de jours ou de mois. Des codes comme %a et %B font renvoyer NULL à strftime(). Convertis plutôt %w ou %m en nom avec CASE (voir la section sur le jour de la semaine plus bas).

  • Le résultat est du texte. Comparer ou trier des dates formatées revient à comparer des chaînes, ce qui ne respecte l’ordre chronologique que si l’année vient en premier :

-- Input: sales
-- id | sale_date  | amount
-- ---+------------+-------
-- 1  | 2025-11-20 | 89.0
-- 2  | 2026-01-08 | 120.0
-- 3  | 2026-03-04 | 64.5

-- Wrong: '11/2025' > '02/2026' is true, because '1' > '0'
SELECT * FROM sales
WHERE strftime('%m/%Y', sale_date) > '02/2026';

-- Output:
-- id | sale_date  | amount
-- ---+------------+-------
-- 1  | 2025-11-20 | 89.0
-- 3  | 2026-03-04 | 64.5

-- Right: put the year first
SELECT * FROM sales
WHERE strftime('%Y-%m', sale_date) > '2026-02';

-- Output:
-- id | sale_date  | amount
-- ---+------------+-------
-- 3  | 2026-03-04 | 64.5
  • NULL en entrée, NULL en sortie. strftime('%Y-%m-%d', NULL) renvoie NULL. Entoure-le de COALESCE() pour afficher autre chose, comme 'No date'.
  • Filtre sur la date, formate-la pour l’affichage. WHERE order_date >= '2026-01-01' AND order_date < '2027-01-01' renvoie les mêmes lignes que WHERE strftime('%Y', order_date) = '2026', mais seule la première peut utiliser un index sur order_date.

Syntaxes alternatives

PostgreSQL, MySQL et SQL Server ont chacun leur propre fonction et leurs propres codes :

-- PostgreSQL: TO_CHAR(value, pattern)
-- (FM stops it padding the day name to 9 characters)
SELECT TO_CHAR(TIMESTAMP '2026-01-15 09:42:00', 'FMDay, MM/DD/YYYY HH24:MI');
-- Output: Thursday, 01/15/2026 09:42

-- MySQL: DATE_FORMAT(value, pattern)
-- (%i is the minute; %M would be the month name)
SELECT DATE_FORMAT('2026-01-15 09:42:00', '%W, %m/%d/%Y %H:%i');
-- Output: Thursday, 01/15/2026 09:42

-- SQL Server: FORMAT(value, pattern)
-- (MM is the month, mm the minute)
SELECT FORMAT(CAST('2026-01-15 09:42:00' AS datetime2), 'dddd, MM/dd/yyyy HH:mm');
-- Output: Thursday, 01/15/2026 09:42

-- Older SQL Server code uses CONVERT with a style number (101 is mm/dd/yyyy)
SELECT CONVERT(VARCHAR(10), CAST('2026-01-15' AS date), 101);
-- Output: 01/15/2026

Quand formater des dates ?

Formate une date quand elle doit être affichée ou regroupée sous forme de texte. La plupart des cas entrent dans l’une de ces quatre catégories.

Afficher les dates dans un format standard

Utilise l’ISO 8601 (YYYY-MM-DD) pour les fichiers et les API, MM/DD/YYYY pour les lecteurs américains et DD/MM/YYYY pour la majeure partie de l’Europe. Le formatage permet aussi de retirer l’heure quand tu ne veux que la date.

Regrouper les lignes par mois ou par année

Extrais uniquement la partie de la date qui t’intéresse, comme %Y pour l’année ou %Y-%m pour le mois, puis regroupe sur le résultat pour obtenir des totaux annuels ou mensuels.

Écrire des dates lisibles

Mélange codes et mots pour les libellés, les rappels et les e-mails. « 03/16 at 02:30 PM » se lit mieux que « 2026-03-16 14:30:00 ».

Travailler avec le jour de la semaine

%w donne le jour de la semaine sous forme de nombre, de 0 (dimanche) à 6 (samedi). Filtre dessus pour trouver les jours ouvrés ou les week-ends, ou convertis-le en nom avec CASE.

Exemples concrets de formatage de dates

Horodater un export au format ISO 8601

Une API attend des horodatages comme 2026-03-15T08:05:12Z. Les heures de audit_log sont stockées en UTC, il suffit donc de placer T et Z autour des codes (SQLite) :

-- Input: audit_log
-- id | action | logged_at
-- ---+--------+--------------------
-- 1  | login  | 2026-03-15 08:05:12
-- 2  | export | 2026-03-15 14:30:45
-- 3  | logout | 2026-03-15 17:58:03

SELECT
  id,
  action,
  strftime('%Y-%m-%dT%H:%M:%SZ', logged_at) AS logged_at_iso
FROM audit_log;

-- Output:
-- id | action | logged_at_iso
-- ---+--------+---------------------
-- 1  | login  | 2026-03-15T08:05:12Z
-- 2  | export | 2026-03-15T14:30:45Z
-- 3  | logout | 2026-03-15T17:58:03Z

Compter les inscriptions par mois

Regroupe les utilisateurs selon leur mois d’inscription (PostgreSQL). YYYY-MM garde les mois dans l’ordre chronologique :

-- Input: users
-- id | name       | signup_date
-- ---+------------+------------
-- 1  | Ana Lima   | 2026-01-08
-- 2  | Ben Okafor | 2026-01-27
-- 3  | Chloe Park | 2026-02-14
-- 4  | Dev Mehta  | 2026-03-03
-- 5  | Elle Novak | 2026-03-30

SELECT
  TO_CHAR(signup_date, 'YYYY-MM') AS month,
  COUNT(*) AS signups
FROM users
GROUP BY TO_CHAR(signup_date, 'YYYY-MM')
ORDER BY month;

-- Output:
-- month   | signups
-- --------+--------
-- 2026-01 | 2
-- 2026-02 | 1
-- 2026-03 | 2

Rédiger une confirmation de réservation

Écris le jour et le mois en toutes lettres dans un message de confirmation (SQL Server) :

-- Input: bookings
-- guest_name  | booking_time
-- ------------+--------------------
-- Priya Patel | 2026-03-16 14:30:00
-- Liam Murphy | 2026-03-18 09:15:00

SELECT
  guest_name,
  FORMAT(booking_time, 'dddd, MMMM d') + ' at ' + FORMAT(booking_time, 'h:mm tt') AS confirmation
FROM bookings;

-- Output:
-- guest_name  | confirmation
-- ------------+-------------------------------
-- Priya Patel | Monday, March 16 at 2:30 PM
-- Liam Murphy | Wednesday, March 18 at 9:15 AM

Trouver le jour le plus chargé de la semaine

Compte les commandes selon le nom du jour où elles ont été passées (MySQL) :

-- Input: orders
-- order_id | order_date
-- ---------+--------------------
-- 1        | 2026-03-07 10:12:00
-- 2        | 2026-03-09 16:40:00
-- 3        | 2026-03-14 11:05:00
-- 4        | 2026-03-16 09:20:00
-- 5        | 2026-03-21 13:45:00

SELECT
  DATE_FORMAT(order_date, '%W') AS weekday,
  COUNT(*) AS order_count
FROM orders
GROUP BY weekday
ORDER BY order_count DESC;

-- Output:
-- weekday  | order_count
-- ---------+------------
-- Saturday | 3
-- Monday   | 2

Pour aller plus loin sur le formatage des dates

Sur ce blog :

Documentation officielle :

Beekeeper Studio est une interface de base de données gratuite & open source

Le meilleur outil de requêtes & éditeur SQL que j’aie jamais utilisé. Il m’offre tout ce dont j’ai besoin pour gérer ma base de données. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio est rapide, intuitif et facile à utiliser. Beekeeper prend en charge plein de bases de données et fonctionne parfaitement sous Windows, Mac et Linux.

La version Linux de Beekeeper est 100% complète : rien de bâclé, aucun compromis sur les fonctionnalités.

Ce que les utilisateurs disent de Beekeeper Studio

★★★★★
« Beekeeper Studio a complètement remplacé mon ancien workflow SQL. C’est rapide, intuitif, et ça rend le travail sur les bases de données à nouveau agréable. »
— Alex K., développeur bases de données
★★★★★
« J’ai essayé beaucoup d’interfaces de bases de données, mais Beekeeper trouve l’équilibre parfait entre fonctionnalités et simplicité. Ça marche, tout simplement. »
— Sarah M., ingénieure full stack