>데이터 베이스 >MySQL 튜토리얼 >임시 테이블이나 변수 없이 날짜 계열을 생성하는 방법은 무엇입니까?

임시 테이블이나 변수 없이 날짜 계열을 생성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-06 12:22:12763검색

How to Generate a Date Series Without Temporary Tables or Variables?

임시 테이블이나 변수 없이 일련의 날짜 생성

미리 정의된 날짜 범위가 있는 테이블을 사용할 수 있음에도 불구하고 이 접근 방식은 차선책으로 간주됩니다. 임시 테이블이나 변수 조작을 사용하지 않고 지정된 간격 내에서 일련의 날짜를 생성하려면 어떻게 해야 합니까?

다음 시나리오를 고려해 보십시오. 애플리케이션에는 사용 가능한 데이터에 관계없이 각 날짜에 대한 행을 반환하는 보고서가 필요합니다. 이를 달성하려면 간단한 쿼리를 구성할 수 있습니다.

select dates.date, sum(sales.amount)
from <series of dates between X and Y> dates
left join sales on date(sales.created) = dates.date
group by 1

많은 날짜가 포함된 테이블을 생성하지 않으려면 대체 솔루션이 권장됩니다.

select * from 
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date from
 (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
 (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
 (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
 (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
 (select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where gen_date between '2017-01-01' and '2017-12-31'

이 쿼리는 효과적으로 계열을 생성합니다. 별도의 테이블을 생성하거나 변수를 설정하지 않고도 지정된 범위 내에서 날짜를 조회할 수 있습니다.

위 내용은 임시 테이블이나 변수 없이 날짜 계열을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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