SQL에서 자동 날짜 완성을 구현하는 방법

(*-*)浩
풀어 주다: 2020-09-14 16:38:54
원래의
9878명이 탐색했습니다.

SQL에서 날짜 자동 완성을 구현하는 방법: 먼저 특정 범위의 달력 테이블 데이터를 생성한 다음 이 달력 테이블 연결을 통해 통계 데이터 테이블이 필요한 데이터를 쿼리합니다. 데이터.

SQL에서 자동 날짜 완성을 구현하는 방법

최근 통계적 접근 기능을 개발할 때 데이터 테이블에서 특정 날짜의 데이터가 누락된 경우 해당 날짜에 대한 기록을 하지만 표시할 때 해당 날짜의 데이터가 여전히 필요합니다. 그렇지 않으면 기본값이 0이 될 수 있습니다.

1의 두 가지 해결 방법을 생각합니다. 프로그램 루프에서 데이터가 누락되었습니다. 그러나 이를 위해서는 7일, 30일 또는 60일을 포함할 수 있는 다양한 범위의 통계 데이터가 필요합니다. 프로그램을 통해 데이터를 완성하는 것은 약간 번거롭습니다.

2. 먼저 일정 범위의 달력 테이블 데이터를 생성한 다음 이 달력 테이블 연결을 사용하여 통계 데이터 테이블이 필요한 데이터를 쿼리합니다. 이 범위 내에서 전체 범위를 얻을 수 있으므로 데이터를 사용할 수 있으므로 이 솔루션은 이러한 수요 변화에 더 적합합니다.

이제 다음 sql 문을 통해 달력 테이블을 생성합니다.

CREATE TABLE num (i INT);-- 创建一个表用来储存0-9的数字
INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的数字,方便以后计算时间
CREATE TABLE  IF NOT EXISTS calendar(DATE DATE); -- 生成一个存储日期的表,date是字段名
-- 这里是生成并插入日期数据
INSERT INTO calendar(DATE) SELECT
    ADDDATE(
        (   -- 起始日期,从2017-1-1开始
            DATE_FORMAT("2017-1-1", '%Y-%m-%d')
        ),
        numlist.id
    ) AS `date`
FROM
    (
        SELECT
            n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000 AS id
        FROM
            num n1
        CROSS JOIN num AS n10
        CROSS JOIN num AS n100
        CROSS JOIN num AS n1000
    ) AS numlist;
로그인 후 복사

sql을 실행하면 2017-01-01~2044-05-18까지 1W 레코드가 생성됩니다. 이 데이터는 오랫동안 충분하므로 해당 조건을 수정하여 더 많은 데이터를 생성할 수도 있습니다. 여기서는 자세히 설명하지 않고 필요에 따라 수정하면 됩니다.

다음 SQL 테스트를 실행합니다.

SELECT COUNT(u.id) AS num, c.date FROM calendar AS c
LEFT JOIN users AS u ON c.date = u.`created_at`
WHERE c.date BETWEEN '2017-05-01' AND '2017-05-07'
GROUP BY c.`date`
ORDER BY c.`date`
로그인 후 복사

다음 결과를 얻습니다.

SQL에서 자동 날짜 완성을 구현하는 방법

위 내용은 SQL에서 자동 날짜 완성을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
sql
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!