집 >데이터 베이스 >MySQL 튜토리얼 >`generate_series()` 없이 MySQL에서 날짜 범위를 생성하는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!