Générer une série de dates (approche sans duplication)
Créer une série de dates dans une plage spécifique est une tâche courante rencontrée dans diverses applications de programmation. MySQL propose plusieurs méthodes pour y parvenir.
Une solution efficace, en particulier face à des restrictions telles que la création de tables temporaires interdites et la définition de variables, consiste à utiliser une requête d'auto-jointure. Cette approche génère une liste de dates dans une période spécifiée, comme le montre l'extrait de code suivant :
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 entre le « 01-01-2017 » et le « 12-2017 ». -31' en manipulant les valeurs de date à l'aide de la fonction adddate() et de diverses sous-requêtes représentant les jours, les mois et les années.
Cette approche offre une méthode concise et efficace pour générer une plage de dates, en particulier dans les situations où la création de tables temporaires ou la définition de variables ne sont pas des options réalisables.
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!