>데이터 베이스 >MySQL 튜토리얼 >숫자 테이블을 사용하여 MySQL 데이터 세트에서 누락된 날짜를 채우는 방법은 무엇입니까?

숫자 테이블을 사용하여 MySQL 데이터 세트에서 누락된 날짜를 채우는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-23 16:52:09513검색

How to Fill Missing Dates in a MySQL Dataset Using a Numbers Table?

MySQL: 날짜 범위에서 누락된 날짜 채우기

데이터 관리 분야에서는 누락된 날짜가 포함된 데이터 세트를 접하는 것이 매우 일반적입니다. 이 문제를 해결하기 위해 MySQL은 누락된 날짜를 채워 연속적인 날짜 순서를 보장하는 솔루션을 제공합니다.

MySQL에서 누락된 날짜를 채우는 핵심은 숫자 테이블 트릭을 활용하는 것입니다. 이 방법에는 자동 증가 정수 열, 즉 사실상 증가하는 숫자 목록이 포함된 "숫자"라는 테이블을 만드는 작업이 포함됩니다.

다음으로 '숫자' 테이블을 충분한 행으로 채웁니다. 이렇게 하면 원하는 날짜 범위를 포괄하는 충분한 범위의 숫자 증가가 보장됩니다.

날짜 목록을 작성하려면 DATE_ADD 함수를 사용하세요. 특히 다음 쿼리에서 "2010-06-06" 및 "2010-06-14"를 원하는 시작 및 종료 날짜로 바꿉니다(YYYY-MM-DD 형식을 사용해야 함).

<code class="language-sql">SELECT DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY)
FROM `numbers` `n`
WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` -1 DAY) < '2010-06-14';</code>

이 쿼리의 결과를 중간 테이블로 사용하여 시간 부분을 기반으로 원본 데이터 테이블에 대해 LEFT JOIN을 수행합니다.

<code class="language-sql">SELECT `x`.`ts` AS `timestamp`,
       COALESCE(`y`.`score`, 0) AS `cnt`
FROM (SELECT DATE_FORMAT(DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY), '%m/%d/%Y') AS `ts`
      FROM `numbers` `n`
      WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) < '2010-06-14') `x`
LEFT JOIN `your_table` `y` ON DATE(`y`.`date_column`) = DATE(`x`.`ts`);</code>

날짜 형식을 유지하려면 위의 ts 필드를 DATE_FORMAT 함수로 래핑하세요.

<code class="language-sql">DATE_FORMAT(`x`.`ts`, '%d.%m.%Y') AS `timestamp`</code>

이러한 단계를 따르면 MySQL 데이터세트에서 누락된 날짜를 효율적으로 채워 필요한 날짜 범위를 원활하게 표시할 수 있습니다.

위 내용은 숫자 테이블을 사용하여 MySQL 데이터 세트에서 누락된 날짜를 채우는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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