CodeGym /Cours /SQL SELF /Types de données pour bosser avec les dates et heures : ...

Types de données pour bosser avec les dates et heures : DATE, TIME, TIMESTAMP

SQL SELF
Niveau 15 , Leçon 4
Disponible

À 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’heure TIME ou les deux ensemble TIMESTAMP.
  • 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 !

2
Mission
SQL SELF, niveau 15, leçon 4
Bloqué
Extraction des parties temporelles d'un TIMESTAMP
Extraction des parties temporelles d'un TIMESTAMP
2
Mission
SQL SELF, niveau 15, leçon 4
Bloqué
Création d'un planning de réunions
Création d'un planning de réunions
1
Étude/Quiz
Types de données numériques, niveau 15, leçon 4
Indisponible
Types de données numériques
Types de données numériques
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION