SQLite - Date & Time

Bonjour à tous, futurs programmeurs ! Aujourd'hui, nous allons plonger dans le monde fascinant des dates et des heures dans SQLite. En tant que votre professeur d'informatique du coin, je vais vous guider à travers ce voyage avec pleins d'exemples et d'explications. Alors, bucklez-vous et c'est parti !

SQLite - Date & Time

Chaînes de Temps

Dans SQLite, les dates et les heures sont généralement stockées sous forme de chaînes de texte. Cela peut sembler étrange au début, mais c'est en réalité très flexible et facile à manipuler. Jetons un œil à quelques formats communs :

Format ISO8601

Le format le plus commun est ISO8601, qui ressemble à ceci :

AAAA-MM-JJ HH:MM:SS

Par exemple :

'2023-06-15 14:30:00'

Cela représente le 15 juin 2023 à 14h30.

Autres Formats Acceptés

SQLite est assez tolérant en ce qui concerne les formats de date et d'heure. Voici quelques autres formats acceptés :

AAAA-MM-JJ
AAAA-MM-JJ HH:MM
AAAA-MM-JJ HH:MM:SS.SSS
AAAA-MM-JJTHH:MM
AAAA-MM-JJTHH:MM:SS
AAAA-MM-JJTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS

Essayons un exemple :

CREATE TABLE events (
id INTEGER PRIMARY KEY,
event_name TEXT,
event_date TEXT
);

INSERT INTO events (event_name, event_date) VALUES
('Fête d'anniversaire', '2023-07-01'),
('Soirée ciné', '2023-07-15 20:00'),
('Course à pied', '06:30');

SELECT * FROM events;

Cela créera une table avec différents formats de date et d'heure. Pretty cool, non ?

Modificateurs

Passons maintenant aux modificateurs. Ce sont des mots-clés spéciaux qui nous permettent de manipuler les dates et les heures. Ils sont comme des baguettes magiques pour nos chaînes de temps !

Modificateurs Communs

Voici un tableau des modificateurs courants :

Modificateur Description
+N days Ajoute N jours à la date
-N days Soustrait N jours de la date
start of month Change la date au premier jour du mois
start of year Change la date au premier jour de l'année
weekday N Change la date à la prochaine date où le jour de la semaine est N (0=dimanche, 1=lundi, etc.)

Voyons-les en action :

SELECT
date('now') AS today,
date('now', '+1 day') AS tomorrow,
date('now', '-1 month') AS last_month,
date('now', 'start of month') AS month_start,
date('now', 'weekday 1') AS next_monday;

Cette requête vous montrera la date d'aujourd'hui, la date de demain, la date d'il y a un mois, le début du mois en cours, et la date lundi prochain. Pretty handy, non ?

Formateurs

Les formateurs sont comme les stylistes du monde des dates et des heures. Ils nous aident à présenter nos dates et nos heures de différentes manières.

Fonction strftime()

La fonction principale que nous utilisons pour le formatage est strftime(). Elle signifie "string format time". Voici la syntaxe de base :

strftime(format, chaîne_de_temps, modificateurs...)

Jetons un œil à quelques spécificateurs courants :

Spécificateur Description
%Y Année (4 chiffres)
%m Mois (01-12)
%d Jour du mois (01-31)
%H Heure (00-23)
%M Minute (00-59)
%S Seconde (00-59)
%w Jour de la semaine (0-6 avec dimanche=0)

Maintenant, mettons tout cela ensemble :

SELECT
strftime('%Y-%m-%d', 'now') AS date_only,
strftime('%H:%M', 'now') AS time_only,
strftime('%Y-%m-%d %H:%M:%S', 'now') AS date_time,
strftime('%w', 'now') AS day_of_week,
strftime('%Y-%m-%d', 'now', '+1 month') AS next_month;

Cette requête vous montrera la date actuelle, l'heure actuelle, la date et l'heure actuelle, le jour de la semaine (0-6), et la date dans un mois.

Un Exemple Fun

Terminons par un exemple fun. Imaginez que vous organisez une fête et que vous voulez savoir quel jour de la semaine cela sera dans 100 jours :

SELECT
strftime('%Y-%m-%d', 'now', '+100 days') AS party_date,
CASE cast(strftime('%w', 'now', '+100 days') AS INTEGER)
WHEN 0 THEN 'Sunday'
WHEN 1 THEN 'Monday'
WHEN 2 THEN 'Tuesday'
WHEN 3 THEN 'Wednesday'
WHEN 4 THEN 'Thursday'
WHEN 5 THEN 'Friday'
WHEN 6 THEN 'Saturday'
END AS party_day;

Cette requête vous dira la date dans 100 jours et quel jour de la semaine cela sera. Parfait pour planifier une fête !

Et voilà, les amis ! Nous avons fait le tour du pays des dates et des heures dans SQLite. Souvenez-vous, la pratique fait la perfection, donc n'ayez pas peur d'expérimenter avec ces fonctions. Avant de vous en rendre compte, vous serez un magicien des dates et des heures ! Bon codage !

Credits: Image by storyset