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!