>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 레코드가 0인 날짜를 포함하여 범위 내의 모든 날짜를 검색하는 방법은 무엇입니까?

MySQL에서 레코드가 0인 날짜를 포함하여 범위 내의 모든 날짜를 검색하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-03 13:33:39939검색

How to Retrieve All Dates within a Range, Including Those with Zero Records in MySQL?

MySQL: 빈 날짜를 포함하여 범위 내 모든 날짜 검색

데이터베이스 관리에서 사용자 기반 성장을 시각화하려면 그래픽 표현이 필요한 경우가 많습니다. 이러한 그래프를 만들려면 특정 날짜 범위 내의 일일 사용자 수를 수집하는 쿼리가 있을 수 있습니다. 그러나 사용자 활동이 부족한 날짜는 결과에서 생략됩니다. 이 문제를 해결하기 위해 레코드가 없는 날짜를 포함하여 포괄적인 날짜 범위를 얻는 방법을 살펴보겠습니다.

MySQL에서 다음 쿼리는 지정된 날짜 범위 내에서 날짜별로 그룹화된 사용자 수를 검색합니다.

SELECT DATE(datecreated), count(*) AS number
FROM users
WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW())
GROUP BY DATE(datecreated)
ORDER BY datecreated ASC

이 쿼리는 원하는 정보를 대부분 제공하지만 사용자가 없는 날짜는 제외됩니다. 빈 날짜를 포함하려면 다음 접근 방식을 활용할 수 있습니다.

SELECT  *
FROM (
    SELECT date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date
    FROM
    (SELECT 0 AS num
        UNION ALL SELECT 1
        UNION ALL SELECT 2
        UNION ALL SELECT 3
        UNION ALL SELECT 4
        UNION ALL SELECT 5
        UNION ALL SELECT 6
        UNION ALL SELECT 7
        UNION ALL SELECT 8
        UNION ALL SELECT 9) n1,
    (SELECT 0 AS num
        UNION ALL SELECT 1
        UNION ALL SELECT 2
        UNION ALL SELECT 3
        UNION ALL SELECT 4
        UNION ALL SELECT 5
        UNION ALL SELECT 6
        UNION ALL SELECT 7
        UNION ALL SELECT 8
        UNION ALL SELECT 9) n2,
    (SELECT 0 AS num
        UNION ALL SELECT 1
        UNION ALL SELECT 2
        UNION ALL SELECT 3
        UNION ALL SELECT 4
        UNION ALL SELECT 5
        UNION ALL SELECT 6
        UNION ALL SELECT 7
        UNION ALL SELECT 8
        UNION ALL SELECT 9) n3,
    (SELECT 0 AS num
        UNION ALL SELECT 1
        UNION ALL SELECT 2
        UNION ALL SELECT 3
        UNION ALL SELECT 4
        UNION ALL SELECT 5
        UNION ALL SELECT 6
        UNION ALL SELECT 7
        UNION ALL SELECT 8
        UNION ALL SELECT 9) n4,
    (SELECT 0 AS num
        UNION ALL SELECT 1
        UNION ALL SELECT 2
        UNION ALL SELECT 3
        UNION ALL SELECT 4
        UNION ALL SELECT 5
        UNION ALL SELECT 6
        UNION ALL SELECT 7
        UNION ALL SELECT 8
        UNION ALL SELECT 9) n5
) a
WHERE date > '2011-01-02 00:00:00.000' AND date < NOW()
ORDER BY date

이 쿼리를 사용하면 지정된 범위 내에서 일련의 날짜를 생성하고 해당 날짜에 해당 날짜가 없더라도 결과에 포함할 수 있습니다. 데이터베이스에 기록됩니다.

위 내용은 MySQL에서 레코드가 0인 날짜를 포함하여 범위 내의 모든 날짜를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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