집 >데이터 베이스 >MySQL 튜토리얼 >달력 테이블 없이 MySQL에서 날짜 범위를 생성하는 방법은 무엇입니까?
달력 테이블 없이 MySQL 날짜 범위를 영리하게 생성
PostgreSQL의 generate_series()
함수를 사용하면 날짜 범위를 편리하게 생성할 수 있습니다. 그러나 MySQL에는 직접적으로 동등한 기능이 없습니다. 이 문서에서는 MySQL에서 유사한 기능을 구현하는 데 도움이 되는 솔루션을 제공합니다.
도전
전체 날짜 범위의 데이터를 결합하는 쿼리를 수행해야 하는 경우가 많습니다. 그러나 데이터베이스에 특정 달력 테이블이 없으면 이 작업이 지루할 수 있습니다.
MySQL 솔루션
제공된 예제 테이블을 사용하여 MySQL에서 날짜 범위를 만듭니다.
<code class="language-sql">SELECT DATE_FORMAT( ADDDATE('2011-1-1', @num := @num + 1), '%Y-%m-%d' ) AS 日期 FROM 任意表, (SELECT @num := -1) AS num LIMIT 365;</code>
설명
이 쿼리는 다음 단계를 사용하여 '2011-01-01'부터 '2011-12-31'까지의 날짜 범위를 생성합니다.
任意表
은 -1~364(윤년의 경우 -1~365) 범위의 가상 줄 번호를 생성하기 위한 참조로 사용됩니다. ADDDATE()
함수는 시작일에 적절한 일수를 추가합니다. DATE_FORMAT()
이 함수는 생성된 날짜를 필수 'YYYY-MM-DD' 형식으로 지정합니다. 통합
이 쿼리는 기본 쿼리 내의 하위 쿼리로 사용되어 원본 테이블과 조인할 수 있습니다. 예:
<code class="language-sql">SELECT t.日期, COALESCE(d.qty, 0) AS qty FROM ( SELECT DATE_FORMAT( ADDDATE('2011-1-1', @num := @num + 1), '%Y-%m-%d' ) AS 日期 FROM 任意表, (SELECT @num := -1) AS num LIMIT 365 ) AS t LEFT JOIN 原始表 AS d ON t.日期 = d.日期;</code>
이 쿼리는 날짜가 누락된 행이 '0' 수량 값으로 채워지는 원하는 결과를 반환합니다.
위 내용은 달력 테이블 없이 MySQL에서 날짜 범위를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!