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

Dans le monde des bases de données SQL, PostgreSQL est réputé pour sa robustesse et la richesse de ses fonctionnalités. L’une d’elles est sa solide prise en charge des types date et timestamp. Dans ce guide, on va voir comment formater des dates dans PostgreSQL, exemples de code à l’appui. Ce tutoriel s’adresse aux développeurs et à toutes les personnes à l’aise avec la technique qui veulent approfondir leurs connaissances de PostgreSQL.

Comprendre les dates dans PostgreSQL

Avant de te lancer dans le formatage des dates, il est essentiel de comprendre comment elles sont représentées dans PostgreSQL. PostgreSQL utilise le type de données «\u00a0Date\u00a0» pour stocker les dates. Voici comment créer un tableau avec une colonne DATE.

CREATE TABLE orders (
  order_id serial PRIMARY KEY,
  order_date DATE NOT NULL
);

Maintenant, insérons quelques données dans le tableau orders.

INSERT INTO orders (order_date) VALUES 
('2022-04-01'),
('2022-04-02'),
('2022-04-03');

PostgreSQL est malin et sait interpréter une date à partir d’une chaîne si tu la fournis au format ISO 6801.

Comment formater des dates dans PostgreSQL\u00a0: utiliser la fonction TO_CHAR

La principale méthode pour formater des dates dans PostgreSQL est la fonction TO_CHAR. TO_CHAR permet de convertir des types date/heure en une chaîne suivant un motif précis. Voici comment l’utiliser\u00a0:

TO_CHAR(date, format)

La liste complète des options de formatage est disponible dans la documentation PostgreSQL. Voici les options de formatage en date de janvier 2024\u00a0:

Motif Description
HH heure du jour (01–12)
HH12 heure du jour (01–12)
HH24 heure du jour (00–23)
MI minute (00–59)
SS seconde (00–59)
MS milliseconde (000–999)
US microseconde (000000–999999)
FF1 dixième de seconde (0–9)
FF2 centième de seconde (00–99)
FF3 milliseconde (000–999)
FF4 dixième de milliseconde (0000–9999)
FF5 centième de milliseconde (00000–99999)
FF6 microseconde (000000–999999)
SSSS, SSSSS secondes écoulées depuis minuit (0–86399)
AM, am, PM ou pm indicateur méridien (sans points)
A.M., a.m., P.M. ou p.m. indicateur méridien (avec points)
Y,YYY année (4 chiffres ou plus) avec virgule
YYYY année (4 chiffres ou plus)
YYY 3 derniers chiffres de l’année
YY 2 derniers chiffres de l’année
Y dernier chiffre de l’année
IYYY année de numérotation des semaines ISO 8601 (4 chiffres ou plus)
IYY 3 derniers chiffres de l’année de numérotation des semaines ISO 8601
IY 2 derniers chiffres de l’année de numérotation des semaines ISO 8601
I dernier chiffre de l’année de numérotation des semaines ISO 8601
BC, bc, AD ou ad indicateur d’ère (sans points)
B.C., b.c., A.D. ou a.d. indicateur d’ère (avec points)
MONTH nom complet du mois en majuscules (complété par des espaces jusqu’à 9 caractères)
Month nom complet du mois avec majuscule initiale (complété par des espaces jusqu’à 9 caractères)
month nom complet du mois en minuscules (complété par des espaces jusqu’à 9 caractères)
MON nom abrégé du mois en majuscules (3 caractères en anglais, longueur variable selon la langue)
Mon nom abrégé du mois avec majuscule initiale (3 caractères en anglais, longueur variable selon la langue)
mon nom abrégé du mois en minuscules (3 caractères en anglais, longueur variable selon la langue)
MM numéro du mois (01–12)
DAY nom complet du jour en majuscules (complété par des espaces jusqu’à 9 caractères)
Day nom complet du jour avec majuscule initiale (complété par des espaces jusqu’à 9 caractères)
day nom complet du jour en minuscules (complété par des espaces jusqu’à 9 caractères)
DY nom abrégé du jour en majuscules (3 caractères en anglais, longueur variable selon la langue)
Dy nom abrégé du jour avec majuscule initiale (3 caractères en anglais, longueur variable selon la langue)
dy nom abrégé du jour en minuscules (3 caractères en anglais, longueur variable selon la langue)
DDD jour de l’année (001–366)
IDDD jour de l’année de numérotation des semaines ISO 8601 (001–371\u00a0; le jour 1 de l’année est le lundi de la première semaine ISO)
DD jour du mois (01–31)
D jour de la semaine, du dimanche (1) au samedi (7)
ID jour de la semaine ISO 8601, du lundi (1) au dimanche (7)
W semaine du mois (1–5) (la première semaine commence le premier jour du mois)
WW numéro de semaine de l’année (1–53) (la première semaine commence le premier jour de l’année)
IW numéro de semaine de l’année de numérotation des semaines ISO 8601 (01–53\u00a0; le premier jeudi de l’année est dans la semaine 1)
CC siècle (2 chiffres) (le vingt et unième siècle commence le 2001-01-01)
J Date julienne (nombre entier de jours depuis le 24 novembre 4714 av. J.-C. à minuit heure locale\u00a0; voir la section B.7)
Q trimestre
RM mois en chiffres romains majuscules (I–XII\u00a0; I=janvier)
rm mois en chiffres romains minuscules (i–xii\u00a0; i=janvier)
TZ abréviation du fuseau horaire en majuscules (prise en charge uniquement dans to_char)
tz abréviation du fuseau horaire en minuscules (prise en charge uniquement dans to_char)
TZH heures du fuseau horaire
TZM minutes du fuseau horaire
OF décalage du fuseau horaire par rapport à UTC (pris en charge uniquement dans to_char)

Exemples de formatage de dates

Commençons par convertir notre date en une chaîne simple et lisible. Voici comment faire\u00a0:

SELECT order_id, TO_CHAR(order_date, 'DD Mon YYYY') as formatted_date
FROM orders;

Le résultat ressemblerait à ceci\u00a0:

order_id | formatted_date
———+—————-
1 | 13 Jan 2024
2 | 12 Jan 2024
3 | 11 Jan 2024
4 | 10 Jan 2024
5 | 09 Jan 2024

On peut aussi extraire seulement une partie de la date\u00a0:

SELECT order_id, TO_CHAR(order_date, 'Day') as day_of_week
FROM orders;

order_id | day_of_week
———+————-
1 | Friday
2 | Thursday
3 | Wednesday
4 | Tuesday
5 | Monday

On peut même combiner les formats si on veut\u00a0:

SELECT order_id, TO_CHAR(order_date, 'Day, DD Mon YYYY') as detailed_date
FROM orders;

order_id | detailed_date
———+————————
1 | Friday, 13 Jan 2024
2 | Thursday, 12 Jan 2024
3 | Wednesday, 11 Jan 2024
4 | Tuesday, 10 Jan 2024
5 | Monday, 09 Jan 2024

La fonction EXTRACT

La fonction EXTRACT donne facilement accès à toutes les parties possibles d’une valeur date/heure, comme l’année, le mois, le jour, etc.

SELECT order_id, EXTRACT(MONTH from order_date) as order_month
FROM orders;

order_id | order_month
———+————
1 | 1
2 | 1
3 | 1
4 | 1
5 | 1

Voilà les bases du formatage des dates dans PostgreSQL. Ces outils devraient te donner des bases solides pour manipuler des données de date. Comme toujours en programmation, la pratique est essentielle\u00a0: teste ces commandes toi-même et vois ce que tu peux en tirer d’autre. Bon code\u00a0!

Tu devrais vraiment essayer d’exécuter ces requêtes dans Beekeeper Studio. :-)

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

★★★★★
«\u00a0Beekeeper 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.\u00a0»
— Alex K., développeur de bases de données
★★★★★
«\u00a0J’ai essayé beaucoup d’interfaces de base de données, mais Beekeeper trouve l’équilibre parfait entre fonctionnalités et simplicité. Ça marche, tout simplement.\u00a0»
— Sarah M., ingénieure full stack

Prêt à améliorer ton workflow SQL\u00a0?

download Télécharger gratuitement