Menu
Coddy logo textTech

Handling Dates Part 3

Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 33 sur 72.

SQL fournit plusieurs fonctions utiles pour manipuler et formater les dates. Voici quelques fonctions de date courantes :

  1. DATE() - Convertit une chaîne en date
  2. STRFTIME() - Formate les dates selon les paramètres spécifiés
  3. DATE('now') - Obtient la date actuelle :

Par exemple, convertir une chaîne en date :

SELECT DATE('2023-05-15 13:45:00')
-- Retourne : 2023-05-15

SELECT DATE('now')
-- Retourne la date actuelle

Par exemple, extraire l'année, le mois et le jour à partir de la date :

-- Get year
SELECT STRFTIME('%Y', '2023-05-15')
-- Returns: 2023

-- Get month
SELECT STRFTIME('%m', '2023-05-15')
-- Returns: 05

-- Get day
SELECT STRFTIME('%d', '2023-05-15')
-- Returns: 15

-- Show combination of year and day (any separator can be used)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15

-- Use a dash separator instead
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Returns: 15-05-2023

-- Get day of week
SELECT STRFTIME('%w', '2023-05-15')
-- Returns: 1 (Monday; Sunday is 0)

Spécificateurs de format courants :

  • %Y : Année (4 chiffres)
  • %m : Mois (01-12)
  • %d : Jour du mois (01-31)
  • %w : Jour de la semaine (0-6, dimanche est 0)
  • %H : Heure (00-23)
  • %M : Minute (00-59)
  • %S : Seconde (00-59)

Vous pouvez utiliser n’importe quel caractère de séparateur entre les spécificateurs (p. ex. -, :, /). Par exemple, STRFTIME('%d-%m-%Y', date) et STRFTIME('%d:%m:%Y', date) combinent tous deux jour, mois et année — juste avec des séparateurs différents.

Vous pouvez combiner ces fonctions dans les requêtes :

-- Find all records from current year
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')
challenge icon

Défi

Facile

Tables et colonnes disponibles :

  • <strong>events</strong> : <strong>id</strong>, <strong>start</strong>, <strong>end</strong>

Écrivez une requête qui affiche :

  • L'ID de l'événement
  • La date de début formatée sous la forme « DD-MM-YYYY ». Appelez cette colonne formatted_start
  • La date de fin formatée sous la forme « DD-MM-YYYY ». Appelez cette colonne formatted_end
  • La durée en jours entre début et fin, arrondie à l'entier le plus proche. Appelez cette colonne duration_days

Filtrez uniquement les lignes pour lesquelles l'année de la colonne start est 2009 (STRFTIME() retourne une chaîne et non un nombre).

Triez les résultats par durée en jours par ordre décroissant.

Rappel : Pour calculer la différence entre les dates, utilisez : JULIANDAY(end) - JULIANDAY(start) et utilisez ROUND() pour arrondir aux entiers.

Aide-mémoire

SQL fournit plusieurs fonctions utiles pour manipuler et formater les dates :

  • DATE() - Convertit une chaîne en une date
  • STRFTIME() - Formate les dates selon des paramètres spécifiés
  • DATE('now') - Obtient la date actuelle

Convertir une chaîne en date :

SELECT DATE('2023-05-15 13:45:00')
-- Retourne : 2023-05-15

SELECT DATE('now')
-- Retourne la date actuelle

Extraire les parties de date en utilisant STRFTIME() :

-- Obtenir l'année
SELECT STRFTIME('%Y', '2023-05-15')
-- Retourne : 2023

-- Obtenir le mois
SELECT STRFTIME('%m', '2023-05-15')
-- Retourne : 05

-- Obtenir le jour
SELECT STRFTIME('%d', '2023-05-15')
-- Retourne : 15

-- Afficher la combinaison d'année et de jour
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Retourne : 2023:15

Spécificateurs de format courants :

  • %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)

Utilisation dans les clauses WHERE :

-- Trouver tous les enregistrements de l'année en cours
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')

Calculer les différences de dates en utilisant JULIANDAY() :

JULIANDAY(end_date) - JULIANDAY(start_date)

Essayez vous-même

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les fondamentaux