MySQL: 날짜 범위에서 누락된 날짜를 효율적으로 처리
이 가이드는 MySQL 데이터베이스 내 날짜 순서의 공백을 메우는 매우 효율적인 방법을 보여줍니다. 핵심 기술은 일련의 정수를 포함하는 간단한 테이블인 NUMBERS 테이블을 활용하여 누락된 날짜를 생성합니다. 이 NUMBERS 표를 데이터 표와 결합하면 데이터 포인트가 없는 경우에도 완전한 기간을 생성할 수 있습니다. 기존 점수는 유지됩니다. 누락된 점수는 기본값(예: 0)으로 표시됩니다.
NUMBERS 테이블 생성 및 채우기:
먼저 NUMBERS 테이블을 생성합니다(아직 존재하지 않는 경우).
CREATE TABLE IF NOT EXISTS numbers (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY);
다음으로 충분한 수의 정수로 채웁니다. 행 수는 최소한 날짜 범위의 최대 일수 이상이어야 합니다. 간단한(매우 큰 범위의 경우 속도가 느릴 수 있음) 방법은 다음과 같습니다.
INSERT INTO numbers (id) VALUES (NULL); -- Repeat as needed to fill the desired range
(참고: 매우 큰 범위의 경우 저장 프로시저나 외부 스크립트를 사용하는 등 NUMBERS 테이블을 채우는 더 효율적인 방법이 있습니다.)
전체 날짜 범위 생성:
다음 쿼리는 NUMBERS 테이블을 사용하여 일련의 날짜를 생성하고 해당 점수를 검색하여 누락된 날짜를 기본 점수 0으로 채웁니다.
SELECT DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) AS timestamp, COALESCE(t.score, 0) AS score -- Replace 't.score' with your actual score column FROM numbers n LEFT JOIN your_table t ON DATE(t.date_column) = DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) -- Replace 'your_table' and 'date_column' WHERE DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) <= '2010-06-15'; -- Adjust start and end dates as needed
your_table
, date_column
및 score
를 실제 테이블 및 열 이름으로 바꿔야 합니다. 원하는 범위가 포함되도록 DATE_ADD
함수에서 시작 날짜와 종료 날짜를 조정하세요. COALESCE
함수는 누락된 점수를 우아하게 처리합니다. 필요한 경우 DATE_FORMAT
기능을 사용하여 날짜 형식을 조정할 수 있습니다.
이 접근 방식은 MySQL 데이터에서 누락된 날짜를 관리하기 위한 확장 가능하고 효율적인 솔루션을 제공합니다. 매우 긴 기간에 대해 NUMBERS개의 테이블 채우기를 최적화하는 것을 고려해 보세요.
위 내용은 MySQL 날짜 범위에서 누락된 날짜를 효율적으로 채우려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!