집 >데이터 베이스 >MySQL 튜토리얼 >루프나 임시 테이블 없이 특정 범위 내의 날짜 목록을 생성하는 방법은 무엇입니까?
날짜 범위에서 날짜 생성
데이터 분석의 일반적인 작업은 주어진 기간에서 특정 날짜를 추출하는 것입니다. 예를 들어 "2010-01-20"에서 "2010-01-24"까지의 날짜를 검색해야 할 수 있습니다.
루프나 임시 테이블이 없는 솔루션
루프, 프로시저 또는 임시 테이블을 사용하지 않고 이를 달성하려면 하위 쿼리를 활용하여 날짜 시퀀스를 생성할 수 있습니다.
<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 (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 ) a WHERE a.Date BETWEEN '2010-01-20' AND '2010-01-24'</code>
이 하위 쿼리는 약 10,000일에 걸친 날짜 계열을 생성합니다. 하위 쿼리에서 범위를 확장하거나 축소하여 일수를 조정할 수 있습니다.
출력
쿼리는 다음 날짜를 반환합니다.
<code>Date ---------- 2010-01-20 2010-01-21 2010-01-22 2010-01-23 2010-01-24</code>
실적 노트
이 쿼리의 성능은 매우 우수하여 5일 범위 동안 0.0009초 만에 실행됩니다. 100,000일의 범위에서도 단 0.0458초만에 완료됩니다.
호환성과 휴대성
이 기술은 약간의 조정만 하면 대부분의 데이터베이스와 호환됩니다. 예를 들어 CURDATE() 함수를 특정 데이터베이스의 해당 함수로 바꿀 수 있습니다.
위 내용은 루프나 임시 테이블 없이 특정 범위 내의 날짜 목록을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!