Maison >base de données >tutoriel mysql >Comment générer une série de dates dans MySQL sans tables ni variables temporaires ?

Comment générer une série de dates dans MySQL sans tables ni variables temporaires ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-11 01:54:10502parcourir

How to Generate a Date Series in MySQL Without Temporary Tables or Variables?

Génération d'une série de dates sans tables ni variables temporaires

Lorsque vous cherchez à générer une série de dates dans une plage particulière pour les rapports MySQL, l'approche optimale est cruciale. Ceci est particulièrement pertinent dans les cas où la création de tables temporaires et la définition de variables sont interdites.

Une solution efficace consiste à utiliser une combinaison de sous-requêtes et d'opérations d'union. Considérez la requête suivante :

select * from
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date
from
(select 0 t0 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 t1 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 t2 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 t3 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 t4 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 gen_date between '2017-01-01' and '2017-12-31'

Cette requête génère une série de dates comprises entre le « 2017-01-01 » et le « 2017-12-31 » en combinant les résultats de plusieurs sous-requêtes. Les sous-requêtes créent un tableau de nombres de 0 à 9, qui sont ensuite utilisés pour construire les dates à l'aide de la fonction adddate(). La dernière clause Where filtre les résultats pour inclure uniquement les dates comprises dans la plage spécifiée.

En utilisant cette méthode, vous pouvez générer efficacement une série de dates sans avoir besoin de tables ou de variables temporaires, ce qui la rend adaptée aux situations avec autorisations restreintes.

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