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
Libérer: 2025-01-14 09:15:53
original
924 Les gens l'ont consulté

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 :

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;
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal