두 날짜 사이의 날짜 목록 생성
두 날짜 사이의 날짜 목록을 가져오는 것은 다양한 데이터 처리 시나리오에서 일반적으로 필요합니다. 표준 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 CASE unitval WHEN 'MICROSECOND' THEN SET nextDate = TIMESTAMPADD(MICROSECOND, intval, thisDate) WHEN 'SECOND' THEN SET nextDate = TIMESTAMPADD(SECOND, intval, thisDate) WHEN 'MINUTE' THEN SET nextDate = TIMESTAMPADD(MINUTE, intval, thisDate) WHEN 'HOUR' THEN SET nextDate = TIMESTAMPADD(HOUR, intval, thisDate) WHEN 'DAY' THEN SET nextDate = TIMESTAMPADD(DAY, intval, thisDate) WHEN 'WEEK' THEN SET nextDate = TIMESTAMPADD(WEEK, intval, thisDate) WHEN 'MONTH' THEN SET nextDate = TIMESTAMPADD(MONTH, intval, thisDate) WHEN 'QUARTER' THEN SET nextDate = TIMESTAMPADD(QUARTER, intval, thisDate) WHEN 'YEAR' THEN SET nextDate = TIMESTAMPADD(YEAR, intval, thisDate) END; INSERT INTO time_intervals SELECT thisDate, TIMESTAMPADD(MICROSECOND, -1, nextDate); SET thisDate = nextDate; UNTIL thisDate >= enddate END REPEAT; END;</code>
사용법:
make_intervals
저장 프로시저를 호출합니다. 예를 들어 '2009-01-01 00:00:00'과 '2009-01-10 00:00:00' 사이의 일일 간격을 생성하려면 다음을 호출하세요. <code class="language-sql">CALL make_intervals('2009-01-01 00:00:00', '2009-01-10 00:00:00', 1, 'DAY');</code>
time_intervals
테이블과 결합하여 날짜 간격을 기준으로 데이터를 집계합니다. 예: <code class="language-sql">SELECT aggregate_function(your_data_table.column_name) AS aggregated_value, time_intervals.interval_start AS date FROM your_data_table LEFT JOIN time_intervals ON (your_data_table.date_column BETWEEN time_intervals.interval_start AND time_intervals.interval_end) GROUP BY time_intervals.interval_start;</code>
출력 예:
<code>+----------------------------+----------+ | aggregated_value | date | +----------------------------+----------+ | 值1 | 2009-01-01 | | 值2 | 2009-01-02 | | 值3 | 2009-01-03 | | 值4 | 2009-01-04 | | 值5 | 2009-01-05 | | 值6 | 2009-01-06 | | 值7 | 2009-01-07 | | 值8 | 2009-01-08 | | 值9 | 2009-01-09 | +----------------------------+----------+</code>
이 방법은 지정된 두 날짜 사이의 날짜 목록을 생성하는 유연한 방법을 제공하므로 날짜 간격을 기준으로 편리하고 효율적인 데이터 집계가 가능합니다.
위 내용은 저장 프로시저를 사용하여 MySQL에서 두 날짜 사이의 날짜 목록을 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!