ホームページ > データベース > mysql チュートリアル > MySQL で 2 つの日付の間の日付のリストを生成するにはどうすればよいですか?

MySQL で 2 つの日付の間の日付のリストを生成するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-22 04:33:08
オリジナル
407 人が閲覧しました

How to Generate a List of Dates Between Two Dates in MySQL?

2 つの日付の間の日付のリストを生成します

指定された 2 つの日付の間の日付のリストを取得するには、make_intervals のようなストアド プロシージャを使用して、必要な間隔が入力された一時テーブル time_intervals を作成することを検討してください。その後、データ テーブルを time_intervals テーブルと結合して、目的の出力を取得できます。

make_intervals ストアド プロシージャ (MySQL)

<code class="language-sql">CREATE PROCEDURE make_intervals(
  startdate timestamp,
  enddate timestamp,
  intval integer,
  unitval varchar(10)
)
BEGIN
  -- 初始化局部变量
  declare thisDate timestamp;
  declare nextDate timestamp;
  set thisDate = startdate;

  -- 删除并创建用于区间的临时表
  drop temporary table if exists time_intervals;
  create temporary table if not exists time_intervals(
    interval_start timestamp,
    interval_end timestamp
  );

  -- 循环以递增并将区间插入到临时表中
  repeat
    -- 根据单位和区间计算下一个区间日期
    select
      case unitval
        when 'MICROSECOND' then timestampadd(MICROSECOND, intval, thisDate)
        when 'SECOND' then timestampadd(SECOND, intval, thisDate)
        when 'MINUTE' then timestampadd(MINUTE, intval, thisDate)
        when 'HOUR' then timestampadd(HOUR, intval, thisDate)
        when 'DAY' then timestampadd(DAY, intval, thisDate)
        when 'WEEK' then timestampadd(WEEK, intval, thisDate)
        when 'MONTH' then timestampadd(MONTH, intval, thisDate)
        when 'QUARTER' then timestampadd(QUARTER, intval, thisDate)
        when 'YEAR' then timestampadd(YEAR, intval, thisDate)
      end into nextDate;

    -- 将当前区间插入到临时表中
    insert into time_intervals select thisDate, timestampadd(MICROSECOND, -1, nextDate);
    set thisDate = nextDate;

  -- 继续直到当前日期达到或超过结束日期
  until thisDate >= enddate
  end repeat;
END;</code>
ログイン後にコピー

使用例

たとえば、2009 年 1 月 1 日から 2009 年 1 月 13 日までの日付のリストを作成するには、次のように make_intervals ストアド プロシージャを呼び出します。

<code class="language-sql">call make_intervals('2009-01-01 00:00:00', '2009-01-13 00:00:00', 1, 'DAY');</code>
ログイン後にコピー
これにより、指定された日付範囲内の毎日を表す間隔が

テーブルに設定されます。その後、データ テーブルを time_intervals テーブルと結合して、これらの間隔に基づいてデータを要約することができます。 time_intervals

以上がMySQL で 2 つの日付の間の日付のリストを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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