>데이터 베이스 >MySQL 튜토리얼 >`generate_series()` 없이 MySQL에서 날짜 범위를 생성하는 방법은 무엇입니까?

`generate_series()` 없이 MySQL에서 날짜 범위를 생성하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-14 09:15:53839검색

How to Generate Date Ranges in MySQL Without `generate_series()`?

MySQL의 날짜 범위 생성: 실용적인 접근 방식

MySQL에는 PostgreSQL의 generate_series() 기능과 직접적으로 동등한 기능이 없습니다. 그러나 SQL과 변수를 사용하여 날짜 범위를 교묘하게 생성할 수 있습니다. 이 방법은 기존 달력 표 없이 날짜 범위를 생성해야 할 때 특히 유용합니다.

예를 들어 설명해 보겠습니다. 판매 테이블을 상상해보세요:

date qty
2011-01-01 3
2011-01-01 4
2011-04-01 2
2011-06-01 5

우리의 목표는 이를 확장하여 2011년 전체 일일 매출을 표시하는 것입니다.

date qty
2011-01-01 7
2011-01-02 0
2011-01-03 0
2011-04-01 2
...and so on...

이를 달성하는 방법은 다음과 같습니다.

<code class="language-sql">SELECT 
    DATE_FORMAT(ADDDATE('2011-01-01', @num := @num + 1), '%Y-%m-%d') AS date
FROM 
    any_table, 
    (SELECT @num := -1) AS num
LIMIT 
    365;</code>

이 쿼리는 any_table(기존 테이블 모두 가능)을 자리 표시자로 사용하여 쿼리가 실행되는지 확인합니다. -1로 초기화된 @num 변수는 각 행마다 증가하여 '2011-01-01'부터 시작하는 연속 날짜를 생성합니다. LIMIT 365 윤년이 아닌 해로 출력을 제한합니다. 윤년에는 LIMIT 366을 사용하세요. DATE_FORMAT 기능은 일관된 날짜 형식을 보장합니다.

이 기술은 MySQL 내에서 날짜 범위를 생성하기 위한 유연하고 효율적인 솔루션을 제공하여 날짜 기반 쿼리 및 분석을 단순화합니다.

위 내용은 `generate_series()` 없이 MySQL에서 날짜 범위를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.