> 데이터 베이스 > MySQL 튜토리얼 > 내 SQL 쿼리에서 누락된 날짜를 어떻게 채울 수 있나요?

내 SQL 쿼리에서 누락된 날짜를 어떻게 채울 수 있나요?

DDD
풀어 주다: 2024-12-13 17:52:16
원래의
509명이 탐색했습니다.

How Can I Fill in Missing Dates in My SQL Queries?

SQL 쿼리의 간단한 날짜 패딩

날짜가 포함된 MySQL 테이블에서 데이터를 가져올 때 반환된 데이터에 공백이 발생하는 것이 일반적입니다. . 이러한 공백을 메우고 완전한 날짜 순서를 생성하기 위해 사용할 수 있는 몇 가지 접근 방식이 있습니다.

MySQL 서버측 접근 방식

한 가지 효과적인 방법은 임시 테이블을 생성하는 것입니다. 원하는 날짜 범위에 걸쳐 있는 MySQL에서. 이는 다음 저장 프로시저를 사용하여 수행할 수 있습니다.

create procedure sp1(d1 date, d2 date)
  declare d datetime;

  create temporary table foo (d date not null);

  set d = d1
  while d <= d2 do
    insert into foo (d) values (d)
    set d = date_add(d, interval 1 day)
  end while

  select foo.d, count(date)
  from foo left join table on foo.d = table.date
  group by foo.d order by foo.d asc;

  drop temporary table foo;
end procedure
로그인 후 복사

이 프로시저는 지정된 범위 내의 모든 날짜를 포함하는 foo라는 임시 테이블을 생성합니다. 그런 다음 원래 테이블을 foo로 조인하여 누락된 날짜를 0으로 채울 수 있습니다.

Perl 클라이언트측 접근 방식

Perl 클라이언트측 접근 방식

use DateTime;

my $start_date = '2008-08-05';
my $end_date = '2008-08-07';

my $date_range = DateTime->range(start => $start_date, end => $end_date);
for my $date in $date_range->each('day') {
    print CSV "$date,0\n";
}
로그인 후 복사

MySQL 서버이거나 더 많은 유연성이 필요한 경우 Perl 클라이언트 측에서 날짜 패딩을 처리할 수도 있습니다. Date::Parse 또는 DateTime::Lite:

이 접근 방식은 지정된 날짜 범위를 반복하고 누락된 날짜를 0으로 인쇄합니다.

결론

특정 상황과 서버 기능에 따라 서버측 접근 방식과 클라이언트측 접근 방식 모두 옵션을 제공합니다. SQL 쿼리에서 빈 날짜를 채우는 데 사용됩니다. 서버 측 접근 방식은 더 효율적이지만 데이터베이스 액세스가 필요하고, 클라이언트 측 접근 방식은 더 뛰어난 유연성을 제공하지만 약간의 성능 오버헤드가 발생할 수 있습니다.

위 내용은 내 SQL 쿼리에서 누락된 날짜를 어떻게 채울 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿