집 >데이터 베이스 >MySQL 튜토리얼 >SQL에서 날짜 범위를 효율적으로 생성하는 방법은 무엇입니까?
SQL 날짜 범위 생성 기술
SQL에서 지정된 범위 내의 날짜 목록을 생성하는 방법은 여러 가지가 있습니다. 이 기사에서는 효율적인 솔루션을 소개하기 위한 예로 '2010-01-20'에서 '2010-01-24'까지의 날짜 시퀀스 생성을 사용합니다.
이 방법은 하위 쿼리를 사용하여 완전한 날짜 컬렉션을 생성합니다. 4개의 중첩 루프 조합을 통해 하위 쿼리는 최대 10,000일까지의 날짜 시퀀스를 효율적으로 생성할 수 있으며 더 긴 날짜 범위로 쉽게 확장할 수 있습니다.
<code class="language-sql">select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as Date from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as d</code>
그런 다음 생성된 날짜 목록을 필터링하여 대상 범위 내의 날짜를 추출합니다.
<code class="language-sql">select a.Date from ( select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as Date from (...) as a ) a where a.Date between '2010-01-20' and '2010-01-24'</code>
이 접근 방식의 장점은 루프, 저장 프로시저 또는 임시 테이블이 필요하지 않고 효율적이며 여러 데이터베이스 플랫폼에 이식 가능하다는 것입니다. 10,000일의 날짜를 생성하는 데는 0.01초도 채 걸리지 않으며, 약 100,000일의 날짜를 생성하더라도 여전히 성능이 뛰어납니다.
위 내용은 SQL에서 날짜 범위를 효율적으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!