>데이터 베이스 >MySQL 튜토리얼 >MySQL SELECT 쿼리에서 날짜 범위를 생성하는 방법은 무엇입니까?

MySQL SELECT 쿼리에서 날짜 범위를 생성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-19 01:16:09203검색

How to Generate a Date Range in a MySQL SELECT Query?

MySQL SELECT 쿼리에서 날짜 범위 생성

이 도움말에서는 지정된 날짜 범위 내에서 날짜 목록을 생성하는 방법을 설명합니다. 예를 들어 시작 날짜가 '2012-02-10'이고 종료 날짜가 '2012-02-15'인 경우 다음과 같은 결과를 얻어야 합니다.

<code>日期      
----------
2012-02-10
2012-02-11
2012-02-12
2012-02-13
2012-02-14
2012-02-15 </code>

솔루션

이를 달성하려면 다음 쿼리를 사용할 수 있습니다.

<code class="language-sql">SELECT * FROM 
(SELECT ADDDATE('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date FROM
 (SELECT 0 i 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 i 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 i 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 i 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 i 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 selected_date BETWEEN '2012-02-10' AND '2012-02-15'</code>

이 쿼리는 5개의 서브 쿼리(t0~t4)의 값을 조합하여 가상 테이블을 생성합니다. 각 하위 쿼리는 한 자리 정수(0-9)의 시퀀스를 생성합니다. 그런 다음 ADDDATE() 함수를 사용하여 이러한 정수를 연결하여 날짜를 구성합니다. WHERE 절은 날짜를 필터링하여 지정된 범위 내의 날짜를 검색합니다.

참고: 이 솔루션은 거의 300년 후의 날짜 범위에 적용됩니다.

위 내용은 MySQL SELECT 쿼리에서 날짜 범위를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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