Maison >base de données >tutoriel mysql >Comment générer une plage de dates dans une requête MySQL SELECT ?

Comment générer une plage de dates dans une requête MySQL SELECT ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-19 01:16:09201parcourir

How to Generate a Date Range in a MySQL SELECT Query?

Générer une plage de dates dans la requête MySQL SELECT

Cet article décrit comment générer une liste de dates dans une plage de dates spécifiée. Par exemple, étant donné une date de début « 2012-02-10 » et une date de fin « 2012-02-15 », vous devriez obtenir le résultat suivant :

<code>日期      
----------
2012-02-10
2012-02-11
2012-02-12
2012-02-13
2012-02-14
2012-02-15 </code>

Solution

Vous pouvez utiliser la requête suivante pour y parvenir :

<code class="language-sql">SELECT * FROM 
(SELECT ADDDATE('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date FROM
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t0,
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2,
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3,
 (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t4) v
WHERE selected_date BETWEEN '2012-02-10' AND '2012-02-15'</code>

Cette requête crée une table virtuelle en combinant les valeurs de cinq sous-requêtes (t0-t4). Chaque sous-requête génère une séquence d'entiers à un chiffre (0-9). Ces entiers sont ensuite concaténés à l'aide de la fonction ADDDATE() pour former une date. La clause WHERE filtre les dates pour récupérer les dates dans une plage spécifiée.

Remarque : Cette solution fonctionne pour des plages de dates de près de 300 ans dans le futur.

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