>데이터 베이스 >MySQL 튜토리얼 >루프나 임시 테이블 없이 특정 범위 내의 날짜 목록을 생성하는 방법은 무엇입니까?

루프나 임시 테이블 없이 특정 범위 내의 날짜 목록을 생성하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-23 17:07:10892검색

How to Generate a List of Dates Within a Specific Range Without Loops or Temporary Tables?

날짜 범위에서 날짜 생성

데이터 분석의 일반적인 작업은 주어진 기간에서 특정 날짜를 추출하는 것입니다. 예를 들어 "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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