ホームページ > データベース > mysql チュートリアル > MySQL で日付シリーズを生成するには?

MySQL で日付シリーズを生成するには?

Barbara Streisand
リリース: 2025-01-14 09:36:43
オリジナル
867 人が閲覧しました

How to Generate a Date Series in MySQL?

MySQL で日付シーケンスを生成します

質問:

PostgreSQL のgenerate_series() 関数と同様に、MySQL で日付シリーズを作成するにはどうすればよいですか?

答え:

MySQL には、generate_series() に直接相当するものはありませんが、次の手順に従って同様の結果を得ることができます。

  1. 連続した番号を含む一時テーブルを作成します。
  2. adddate() 関数を使用して、対応する日付間隔を各数値に加算します。
  3. date_format() 関数を使用して、生成された日付を目的の形式に準拠するようにフォーマットします。

次に、2011 年 1 月 1 日から 2011 年 12 月 31 日までの日付範囲を作成するサンプル クエリを示します。

<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>
ログイン後にコピー

このクエリ内:

  • 任意表 は、1 つ以上の行を含む一時テーブルです (行数のみが使用されるため、任意のテーブルを使用できます)。
  • @num := @num 1 0 から始まる連続した数字のシーケンスを作成します。
  • ADDDATE('2011-01-01', @num := @num 1) 対応する日付間隔を各数値に加算します。
  • DATE_FORMAT() 生成された日付を目的の形式にフォーマットします。
  • LIMIT 365 生成する日付の数を指定します (うるう年以外の場合は 365)。

この方法を使用すると、別のカレンダー テーブルを必要とせずに、MySQL で日付シーケンスを生成できます。 任意表 は既存のテーブルに置き換えることも、一時データ行の作成に使用することもできることに注意してください。 MySQL 自体は PostgreSQL SELECT 1 UNION ALL SELECT 1 ... のような直接関数を提供していないため、これは回避策です。 generate_series

以上がMySQL で日付シリーズを生成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート