Maison >base de données >tutoriel mysql >Comment générer des plages de dates dans MySQL sans « Generate_series() » ?

Comment générer des plages de dates dans MySQL sans « Generate_series() » ?

DDD
DDDoriginal
2025-01-14 09:15:53839parcourir

How to Generate Date Ranges in MySQL Without `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!

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