Mysql 통계 일 별 쿼리 작성 시 특정 범위에 없는 날짜 채우는 법
Oracle의 경우 계층적 질의를 사용하면 해소가능 하나 Mysql은 계층적 질의가 없다.
SELECT DATE_FORMAT(baseDate, '%Y%m%d') AS baseDate
FROM
(SELECT adddate('1970-01-01',t4.i * 10000 + t3.i * 1000 + t2.i * 100 + t1.i * 10 + t0.i) baseDate from
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t0,
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2,
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3,
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t4) v
WHERE baseDate BETWEEN '2021-10-10' AND '2021-12-31'
BETWEEN에 날짜 범위를 넣고 조회 한 후 LEFT JOIN을 걸어서 데이터가 있는 날짜에만 표기 가능
혹은 프로그램에서 비슷한 방식으로 해소 가능
'Database > MySQL' 카테고리의 다른 글
java.sql.SQLNonTransientConnectionException: (conn=18546) Connection reset (0) | 2022.08.11 |
---|