Générer une séquence de dates dans MySQL
Question :
Comment créer une série de dates dans MySQL, similaire à la fonction generate_series() dans PostgreSQL ?
Réponse :
MySQL n'a pas d'équivalent direct à generate_series(), mais nous pouvons obtenir des résultats similaires en suivant ces étapes :
Voici un exemple de requête permettant de créer une plage de dates allant du 1er janvier 2011 au 31 décembre 2011 :
<code class="language-sql">SELECT DATE_FORMAT( ADDDATE('2011-01-01', @num := @num + 1), '%Y-%m-%d' ) AS 日期 FROM 任意表, (SELECT @num := -1) AS num LIMIT 365;</code>
Dans cette requête :
任意表
est une table temporaire contenant une ou plusieurs lignes (n'importe quelle table peut être utilisée, car seul le nombre de lignes est utilisé). @num := @num 1
Crée une séquence de nombres consécutifs commençant à 0. ADDDATE('2011-01-01', @num := @num 1)
Ajoutez l'intervalle de date correspondant à chaque numéro. DATE_FORMAT()
Formatez la date générée dans le format souhaité. LIMIT 365
Précise le nombre de dates à générer (365 pour les années non bissextiles). Cette méthode nous permet de générer des séquences de dates dans MySQL sans avoir besoin d'une table de calendrier séparée. Notez que 任意表
peut être remplacé par n'importe quelle table existante ou utilisé pour créer des lignes de données temporaires. Il s'agit d'une solution de contournement car MySQL lui-même ne fournit pas de fonctions directes comme PostgreSQL SELECT 1 UNION ALL SELECT 1 ...
. generate_series
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!