SQL - Date & Time: Guide Complet pour Débutants
Salut à toi, futur mage des bases de données ! Aujourd'hui, nous plongeons dans le monde fascinant des dates et des heures en SQL. En tant que ton enseignant de quartier en informatique, je suis là pour te guider dans ce voyage avec plein d'exemples et d'explications. Alors, prends ta machine à temps virtuelle et c'est parti !
Types de Données Date & Time en SQL
Avant de commencer à manipuler les dates et les heures, nous devons comprendre comment SQL stocke ces informations. Pense à ces types de données comme des conteneurs spéciaux conçus spécifiquement pour les données temporelles.
DATE
Le type de données DATE
stocke une date au format YYYY-MM-DD.
CREATE TABLE events (
event_id INT PRIMARY KEY,
event_name VARCHAR(100),
event_date DATE
);
INSERT INTO events (event_id, event_name, event_date)
VALUES (1, 'Pique-nique d'entreprise', '2023-07-15');
Dans cet exemple, nous créons une table events
et ajoutons un pique-nique d'entreprise prévu pour le 15 juillet 2023. Le type de données DATE
nous assure que nous stockons uniquement la date, sans aucune information sur l'heure.
TIME
Le type de données TIME
stocke l'heure au format HH:MI:SS.
CREATE TABLE class_schedule (
class_id INT PRIMARY KEY,
class_name VARCHAR(100),
start_time TIME
);
INSERT INTO class_schedule (class_id, class_name, start_time)
VALUES (1, 'Introduction à SQL', '09:30:00');
Ici, nous créons un planning de cours et ajoutons un cours de SQL qui commence à 9:30 AM. Le type de données TIME
nous permet de stocker cette heure précisément.
DATETIME
Le type de données DATETIME
combine la date et l'heure, généralement au format YYYY-MM-DD HH:MI:SS.
CREATE TABLE appointments (
appointment_id INT PRIMARY KEY,
patient_name VARCHAR(100),
appointment_datetime DATETIME
);
INSERT INTO appointments (appointment_id, patient_name, appointment_datetime)
VALUES (1, 'John Doe', '2023-06-20 14:30:00');
Dans cet exemple, nous programmisons un rendez-vous médical pour John Doe le 20 juin 2023 à 14h30. Le type de données DATETIME
nous permet de stocker à la fois la date et l'heure dans une seule colonne.
TIMESTAMP
Le type de données TIMESTAMP
est similaire à DATETIME
, mais il est souvent utilisé pour suivre lorsque un enregistrement a été modifié pour la dernière fois.
CREATE TABLE blog_posts (
post_id INT PRIMARY KEY,
title VARCHAR(200),
content TEXT,
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO blog_posts (post_id, title, content)
VALUES (1, 'Mon Premier Article de Blog', 'Bonjour, le monde !');
Dans cet exemple, la colonne last_updated
sera automatiquement définie sur la date et l'heure actuelles lors de l'insertion ou de la mise à jour d'un enregistrement.
Fonctions Date & Time en SQL
Maintenant que nous savons comment stocker les dates et les heures, explorons certaines des fonctions magiques que SQL offre pour manipuler ces données. J'aime penser à ces fonctions comme des outils de voyage dans le temps dans notre boîte à outils SQL !
Date et Heure Actuelle
Commençons par les bases - obtenir la date et l'heure actuelle.
SELECT CURRENT_DATE() AS aujourd'hui,
CURRENT_TIME() AS heure_actuelle,
NOW() AS datetime_actuel;
Cette requête vous donnera la date actuelle, l'heure actuelle et le datetime actuel. C'est comme demander à SQL "Quelle heure est-il ?" Pratique, n'est-ce pas ?
Extraction de Parties d'une Date
Parfois, nous n'avons besoin que de certaines parties d'une date. SQL a des fonctions pour cela aussi !
SELECT YEAR('2023-06-20') AS année,
MONTH('2023-06-20') AS mois,
DAY('2023-06-20') AS jour,
WEEKDAY('2023-06-20') AS jour_de_la_semaine;
Cette requête extrait l'année, le mois, le jour et le jour de la semaine de la date donnée. C'est comme disséquer une date pour obtenir l'information dont nous avons besoin.
Arithmetic sur les Dates
SQL nous permet de réaliser des opérations arithmétiques sur les dates. Cela est particulièrement utile pour calculer des durées ou trouver des dates futures/passées.
SELECT DATE_ADD('2023-06-20', INTERVAL 7 DAY) AS une_semaine_plus_tard,
DATE_SUB('2023-06-20', INTERVAL 1 MOIS) AS un_mois_plus_tard,
DATEDIFF('2023-12-31', '2023-06-20') AS jours_jusqu'à_la_nouvelle_annee;
Dans cet exemple, nous ajoutons 7 jours à une date, soustrayons 1 mois d'une date, et calculons le nombre de jours entre deux dates. C'est comme avoir une machine à temps à nos doigts !
Formatage des Dates
Parfois, nous devons présenter les dates dans un format spécifique. La fonction DATE_FORMAT
vient à notre secours.
SELECT DATE_FORMAT('2023-06-20', '%W, %M %d, %Y') AS date_formatée,
DATE_FORMAT('2023-06-20 14:30:00', '%h:%i %p') AS heure_formatée;
Cette requête formate la date comme "Tuesday, June 20, 2023" et l'heure comme "02:30 PM". C'est comme habiller nos dates pour une occasion chic !
Voici un tableau des spécificateurs de format couramment utilisés :
Spécificateur | Description | Exemple |
---|---|---|
%Y | Année à 4 chiffres | 2023 |
%y | Année à 2 chiffres | 23 |
%M | Nom du mois | January |
%m | Mois (01-12) | 01 |
%d | Jour du mois (01-31) | 01 |
%W | Nom du jour de la semaine | Monday |
%w | Jour de la semaine (0-6, 0 est dimanche) | 1 |
%H | Heure (00-23) | 13 |
%h | Heure (01-12) | 01 |
%i | Minutes (00-59) | 30 |
%s | Secondes (00-59) | 45 |
%p | AM ou PM | PM |
Mettre Tout Ensemble
Terminons par un exemple plus complexe qui combine plusieurs concepts :
CREATE TABLE user_logins (
login_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
login_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO user_logins (user_id) VALUES (1), (2), (3);
SELECT
user_id,
login_time,
DATE_FORMAT(login_time, '%W, %M %d, %Y at %h:%i %p') AS formatted_login_time,
CASE
WHEN WEEKDAY(login_time) IN (5, 6) THEN 'Weekend Login'
ELSE 'Weekday Login'
END AS login_type,
TIMESTAMPDIFF(HOUR, login_time, NOW()) AS hours_since_login
FROM user_logins
WHERE login_time > DATE_SUB(CURRENT_DATE(), INTERVAL 1 WEEK);
Cet exemple crée une table user_logins
, insère des données, puis les interroge avec diverses manipulations de date et d'heure. Nous formatons l'heure de connexion, déterminons si c'était un week-end ou un jour ouvrable, et calculons combien d'heures se sont écoulées depuis la connexion.
Et voilà, les amis ! Nous avons voyagé dans le temps avec SQL, en apprenant sur les types de données et les fonctions date et heure. Souviens-toi, la pratique rend parfait, alors n'ayez pas peur d'expérimenter avec ces concepts. Avant de savoir, vous serez capable de plier le temps à votre guise... dans vos bases de données, du moins !
Credits: Image by storyset