> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 두 날짜 사이의 날짜 목록을 생성하는 방법은 무엇입니까?

MySQL에서 두 날짜 사이의 날짜 목록을 생성하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-22 04:33:08
원래의
399명이 탐색했습니다.

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

두 날짜 사이의 날짜 목록 생성

주어진 두 날짜 사이의 날짜 목록을 얻으려면 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에서 두 날짜 사이의 날짜 목록을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿