Guide des fonctions de date et heure MySQL : un guide pour débutants

Salut à toi, futur mage des bases de données ! Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des fonctions de date et heure de MySQL. Ne t'inquiète pas si tu n'as jamais écrit une ligne de code auparavant - je serai ton guide amical, et nous avancerons pas à pas. À la fin de ce tutoriel, tu manipuleras les dates et les heures comme un pro !

MySQL - Date and Time Functions

Pourquoi les fonctions de date et heure sont-elles importantes

Avant de plonger dedans, laisse-moi te partager une petite histoire. Il y a quelques années, un de mes élèves construisait une application de rappel d'anniversaires. Il avait du mal avec les calculs de dates jusqu'à ce qu'il découvre les fonctions de date de MySQL. D'un coup, son application pouvait dire aux utilisateurs combien de jours il restait avant l'anniversaire de leurs amis. C'était magique ! Voilà le pouvoir de maîtriser ces fonctions.

Pour commencer : la date et l'heure actuelles

Commençons par les bases. MySQL propose plusieurs fonctions pour obtenir la date et l'heure actuelles. Voici les plus courantes :

Fonction Description Exemple de sortie
NOW() Date et heure actuelles 2023-05-15 14:30:00
CURDATE() Date actuelle 2023-05-15
CURTIME() Heure actuelle 14:30:00

Voyons ces fonctions en action :

SELECT NOW(), CURDATE(), CURTIME();

Cette requête renverra la date et l'heure actuelles, uniquement la date, et uniquement l'heure. Pas mal, non ?

Comprendre la sortie

La fonction NOW() renvoie une valeur datetime, qui inclut à la fois la date et l'heure. CURDATE() te donne uniquement la date au format 'AAAA-MM-JJ', tandis que CURTIME() fournit l'heure au format 'HH:MM:SS'.

Extraire des parties des dates et des heures

Maintenant, disons que tu as une valeur datetime et que tu veux extraire des parties spécifiques. MySQL te propose des fonctions pratiques pour cela :

Fonction Description Exemple d'utilisation Exemple de sortie
YEAR() Extraire l'année YEAR('2023-05-15') 2023
MONTH() Extraire le mois MONTH('2023-05-15') 5
DAY() Extraire le jour DAY('2023-05-15') 15
HOUR() Extraire l'heure HOUR('14:30:00') 14
MINUTE() Extraire la minute MINUTE('14:30:00') 30
SECOND() Extraire la seconde SECOND('14:30:45') 45

Essayons ces fonctions :

SELECT
YEAR('2023-05-15') AS year,
MONTH('2023-05-15') AS month,
DAY('2023-05-15') AS day,
HOUR('14:30:45') AS hour,
MINUTE('14:30:45') AS minute,
SECOND('14:30:45') AS second;

Cette requête extraira proprement chaque partie de la date et de l'heure pour nous.

Application dans le monde réel

Imaginons que tu construis un site web qui affiche les anniversaires des utilisateurs. Tu pourrais utiliser les fonctions MONTH() et DAY() pour extraire uniquement le mois et le jour d'un anniversaire stocké, en ignorant l'année. Ainsi, tu peux souhaiter joyeusement l'anniversaire aux utilisateurs sans révéler leur âge !

Arithmetic des dates : ajouter et soustraire

Une des choses les plus géniales des fonctions de date de MySQL, c'est qu'elles permettent de faire des opérations mathématiques avec les dates. Regardons quelques fonctions pour cela :

Fonction Description Exemple d'utilisation
DATE_ADD() Ajouter un intervalle à une date DATE_ADD('2023-05-15', INTERVAL 1 DAY)
DATE_SUB() Soustraire un intervalle d'une date DATE_SUB('2023-05-15', INTERVAL 1 MOIS)
DATEDIFF() Trouver la différence entre dates DATEDIFF('2023-05-15', '2023-01-01')

Voici comment nous pourrions utiliser ces fonctions :

SELECT
DATE_ADD('2023-05-15', INTERVAL 1 DAY) AS tomorrow,
DATE_SUB('2023-05-15', INTERVAL 1 MOIS) AS last_month,
DATEDIFF('2023-05-15', '2023-01-01') AS days_since_new_year;

Cette requête nous montrera la date de demain, la date d'il y a un mois, et combien de jours se sont écoulés depuis le Jour de l'An.

Le pouvoir des intervalles

Dans les fonctions DATE_ADD() et DATE_SUB(), nous utilisons le mot-clé INTERVAL. C'est incroyablement flexible - tu peux ajouter ou soustraire des années, des mois, des jours, des heures, des minutes, et même des secondes !

Formater les dates et les heures

Parfois, tu dois présenter les dates et les heures dans un format spécifique. C'est là que la fonction DATE_FORMAT() devient utile :

SELECT DATE_FORMAT('2023-05-15 14:30:00', '%W, %M %d, %Y at %h:%i %p') AS formatted_date;

Cela sortira : "Monday, May 15, 2023 at 02:30 PM"

Les symboles % suivis de lettres sont des spécificateurs de format. Voici quelques-uns des plus courants :

Spécificateur Description
%W Nom du jour en entier
%M Nom du mois en entier
%d Jour du mois (01-31)
%Y Année à 4 chiffres
%h Heure (01-12)
%i Minutes (00-59)
%p AM ou PM

Mettre tout ensemble

Combinons ce que nous avons appris dans un exemple pratique. Imaginons que nous construisons un système pour suivre les anniversaires de travail des employés :

CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
hire_date DATE
);

INSERT INTO employees VALUES
(1, 'Alice', '2020-06-15'),
(2, 'Bob', '2021-03-20'),
(3, 'Charlie', '2019-11-01');

SELECT
name,
hire_date,
YEAR(CURDATE()) - YEAR(hire_date) AS years_employed,
DATE_ADD(DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(hire_date), '-', DAY(hire_date))),
INTERVAL IF(CURDATE() > DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(hire_date), '-', DAY(hire_date))), 1, 0) YEAR)
AS next_anniversary,
DATEDIFF(
DATE_ADD(DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(hire_date), '-', DAY(hire_date))),
INTERVAL IF(CURDATE() > DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(hire_date), '-', DAY(hire_date))), 1, 0) YEAR),
CURDATE()
) AS days_until_anniversary
FROM employees;

Cette requête fait plusieurs choses :

  1. Elle calcule combien d'années chaque employé a travaillé dans l'entreprise.
  2. Elle détermine la date de leur prochain anniversaire de travail.
  3. Elle calcule combien de jours restent jusqu'à leur prochain anniversaire.

Conclusion

Félicitations ! Tu viens de faire tes premiers pas dans le monde des fonctions de date et heure de MySQL. Nous avons couvert les bases de l'obtention des dates et heures actuelles, de l'extraction de parties des dates, des opérations arithmétiques sur les dates, et du formatage des dates pour l'affichage.

N'oublie pas, la pratique rend parfait. Essaie de créer tes propres requêtes en utilisant ces fonctions. Peut-être construis-tu cette application de rappel d'anniversaires que j'ai mentionnée plus tôt ! Plus tu joues avec ces fonctions, plus tu deviendras à l'aise avec elles.

Et souviens-toi toujours : dans le monde de la programmation, chaque jour est une nouvelle opportunité d'apprendre et de grandir. Bon codage, futurs maîtres des bases de données !

Credits: Image by storyset