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
Libérer: 2025-01-23 17:11:09
original
777 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal