À quel point tu croises souvent des applis qui gèrent des dates et des heures ? Commandes en ligne, plannings, historique des modifs dans une base — tout ça dépend d’un bon stockage du temps. PostgreSQL te file des outils puissants pour gérer ce genre de données, et bien sûr, les tables avec des dates, c’est pas juste des tableaux flippants avec des horloges, mais une structure claire pour analyser et organiser les événements.
Les types pour les dates et heures permettent de :
- Stocker juste la date
DATE, juste l’heureTIMEou les deux ensembleTIMESTAMP. - Faire des opérations comme ajouter des jours, calculer la différence entre deux dates ou filtrer des enregistrements selon des critères temporels.
- Gérer les fuseaux horaires (mais ça, c’est pour une prochaine fois).
Types de données : DATE, TIME, TIMESTAMP
Type de donnée DATE
Le type DATE sert à stocker juste la date, sans l’heure. Il enregistre l’année, le mois et le jour. Ce type est utile quand :
- Tu veux garder la date d’anniversaire d’un utilisateur.
- La date de l’événement compte, mais pas l’heure.
Exemple de format : YYYY-MM-DD (année-mois-jour).
Exemple :
| id | name - VARCHAR(100) | event_date - DATE |
|---|---|---|
| 1 | SQL Workshop | 2025-06-15 |
| 2 | Python | 2025-06-17 |
| 3 | Java Courses | 2025-06-25 |
Type de donnée TIME
Le type TIME est utilisé pour stocker juste l’heure. Il est utile quand :
- Tu veux garder un planning, genre le début de la journée de taf.
- L’heure compte, mais pas la date.
Exemple de format : HH:MI:SS (heures:minutes:secondes).
Exemple :
| id | task_name - VARCHAR(100) | start_time - TIME |
|---|---|---|
| 1 | Team Meeting | 09:00:00 |
| 2 | Code Review | 11:30:00 |
| 3 | Client Call | 15:00:00 |
Type de donnée TIMESTAMP
TIMESTAMP — c’est la date et l’heure ensemble. C’est utile quand :
- Tu veux enregistrer un moment précis, genre quand un utilisateur se connecte.
- Il te faut un timestamp pour suivre les changements (logs).
Exemple de format : YYYY-MM-DD HH:MI:SS (année-mois-jour heures:minutes:secondes).
Exemple :
| id | action - VARCHAR(100) | login_time - TIMESTAMP |
|---|---|---|
| 1 | User Login | 2023-10-15 14:30:00 |
| 2 | File Uploaded | 2023-10-15 15:10:00 |
| 3 | User Logout | 2023-10-15 16:45:00 |
Opérations avec les dates et heures
Maintenant qu’on sait quels types existent, voyons comment les utiliser. PostgreSQL propose plein de fonctions intégrées pour manipuler les dates et heures.
Extraire des parties de date et heure
Si t’as un timestamp (TIMESTAMP) et tu veux juste l’année, le mois, le jour ou l’heure, utilise la fonction EXTRACT.
Exemple :
SELECT EXTRACT(YEAR FROM TIMESTAMP '2025-06-15 14:30:00') AS year;
-- Résultat : 2025
SELECT EXTRACT(MONTH FROM TIMESTAMP '2025-06-15 14:30:00') AS month;
-- Résultat : 06
SELECT EXTRACT(DAY FROM TIMESTAMP '2025-06-15 14:30:00') AS day;
-- Résultat : 15
Ajouter et soustraire des intervalles de temps
Tu veux savoir ce qui se passe dans une semaine ? Ou ce qu’il y avait hier ? Utilise les opérations avec les intervalles.
Exemple :
-- Ajouter 7 jours à la date actuelle
SELECT CURRENT_DATE + INTERVAL '7 days' AS next_week;
-- Soustraire 1 mois
SELECT CURRENT_DATE - INTERVAL '1 month' AS last_month;
Comparer des dates
Comment savoir si un événement est déjà passé ? Plus simple que de trouver un bug dans le code — compare juste les valeurs.
Exemple :
SELECT event_date
FROM events
WHERE event_date < CURRENT_DATE;
-- On sélectionne tous les événements passés
Tu découvriras plus de fonctions pour bosser avec les dates et heures dans les prochaines leçons. Pour l’instant, retiens juste que ces types existent — c’est déjà pas mal.
Problèmes de fuseaux horaires et standard de temps
Même si dans cette leçon on va pas encore rentrer dans les détails des fuseaux horaires, c’est important de savoir que PostgreSQL gère le type TIMESTAMPTZ (timestamp avec fuseau horaire). Par exemple, 2023-10-15 14:30:00+02 indique que cette heure est en UTC+2.
On va forcément en parler dans le cours, mais plus tard :P
Exemple
Il est temps de tester tout ça en pratique. Créons une table qui va stocker l’emploi du temps des étudiants.
| id | subject_name | class_date - DATE | start_time - TIME | end_time - TIME | created_at - TIMESTAMP |
|---|---|---|---|---|---|
| 1 | Mathematics | 2023-10-16 | 09:00:00 | 10:30:00 | 2023-10-12 14:00:00 |
| 2 | Physics | 2023-10-16 | 11:00:00 | 12:30:00 | 2023-10-12 14:00:00 |
| 3 | Chemistry | 2023-10-17 | 09:00:00 | 10:30:00 | 2023-10-12 14:01:00 |
| 4 | Literature | 2023-10-17 | 11:00:00 | 12:30:00 | 2023-10-12 14:01:00 |
| 5 | Computer Science | 2023-10-18 | 10:00:00 | 11:30:00 | 2023-10-12 14:02:00 |
Dans quelques leçons tu créeras ce genre de tables dans ta base avec des requêtes SQL. Pour l’instant, on admire juste :)
Erreurs classiques
Format de date et heure : quand tu insères des données, fais gaffe au bon format : YYYY-MM-DD pour les dates et HH:MI:SS pour les heures. PostgreSQL risque de pas piger si tu tentes d’insérer une date comme "15/10/2023".
Non-concordance des types de données : essayer de mettre une valeur texte dans un champ de type DATE va te donner une erreur.
Erreurs d’intervalles de temps : si tu ajoutes, par exemple, 30 jours à février, PostgreSQL va gérer ça correctement, mais la date peut tomber en mars.
Maintenant tu connais les types de données pour bosser avec les dates et heures dans PostgreSQL. Dans les vrais projets, ça aide à gérer les plannings, logger des événements ou suivre les trucs importants dans le système !
GO TO FULL VERSION