Maison >base de données >tutoriel mysql >Comment générer une liste de dates dans une plage spécifique à l'aide de SQL ?

Comment générer une liste de dates dans une plage spécifique à l'aide de SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-23 17:11:09778parcourir

How to Generate a List of Dates Within a Specific Range Using SQL?

Utilisez SQL pour générer une liste de dates dans une plage de dates

Dans l'analyse et la gestion des données, il est souvent nécessaire de générer une liste de dates dans une plage de dates spécifiée. Ceci peut être réalisé grâce à des requêtes SQL efficaces.

Une solution consiste à utiliser une sous-requête pour générer une séquence de dates. Par exemple, la requête suivante génère une liste de dates pour les 10 000 derniers jours :

<code class="language-sql">SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a)) DAY AS Date
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS d;</code>

Pour générer une liste de dates dans une plage de dates spécifique, vous pouvez filtrer les dates à l'aide de la clause WHERE :

<code class="language-sql">SELECT a.Date
FROM (
    SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a)) DAY AS Date
    FROM ... -- 上述子查询
) a
WHERE a.Date BETWEEN '2010-01-20' AND '2010-01-24';</code>

Cette requête renverra le résultat suivant :

<code>Date
----------
2010-01-24
2010-01-23
2010-01-22
2010-01-21
2010-01-20</code>

Les performances de cette méthode sont étonnamment bonnes, prenant moins d'une seconde pour générer 100 000 dates. Il est également hautement portable et compatible avec la plupart des bases de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn