Maison >base de données >tutoriel mysql >Comment générer des plages de dates dans MySQL sans « Generate_series() » ?
Génération de plages de dates MySQL : une approche pratique
MySQL n'a pas d'équivalent direct à la fonction generate_series()
de PostgreSQL. Cependant, nous pouvons intelligemment générer des plages de dates à l’aide de SQL et de variables. Cette méthode est particulièrement utile lorsque vous devez créer des plages de dates sans tableau de calendrier préexistant.
Illustrons avec un exemple. Imaginez une table de vente :
date | qty |
---|---|
2011-01-01 | 3 |
2011-01-01 | 4 |
2011-04-01 | 2 |
2011-06-01 | 5 |
Notre objectif est d'étendre cela pour afficher les ventes quotidiennes pour toute l'année 2011 :
date | qty |
---|---|
2011-01-01 | 7 |
2011-01-02 | 0 |
2011-01-03 | 0 |
2011-04-01 | 2 |
...and so on... |
Voici comment nous y parvenons :
<code class="language-sql">SELECT DATE_FORMAT(ADDDATE('2011-01-01', @num := @num + 1), '%Y-%m-%d') AS date FROM any_table, (SELECT @num := -1) AS num LIMIT 365;</code>
Cette requête utilise any_table
(n'importe quelle table existante fera l'affaire) comme espace réservé pour garantir l'exécution de la requête. La variable @num
, initialisée à -1, s'incrémente à chaque ligne, générant des dates consécutives à partir du « 01-01-2011 ». LIMIT 365
restreint la sortie à une année non bissextile ; utilisez LIMIT 366
pour les années bissextiles. La fonction DATE_FORMAT
garantit un formatage de date cohérent.
Cette technique fournit une solution flexible et efficace pour générer des plages de dates dans MySQL, simplifiant ainsi les requêtes et l'analyse basées sur les dates.
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!