DB/MySql (MariaDB)

MariaDB 모든 날짜 생성하기 - 삽질중인 개발자

개발 N년차 2022. 7. 20. 08:43
반응형

- WITH RECURSIVE 구문을 사용하여 모든 날짜 데이터를 생성하는 방법 -

 

MariaDB에서 더미용 모든 날짜를 생성하는 방법에 대해서 포스팅한다.

 

WITH RECURSIVE 구문을 사용하여 데이터를 생성하는 건데 MariaDB 10.2.1 부터 WITH RECURSIVE 구문을 사용 할 수 있다

 

더미 데이터를 생성하는 SQL은 아래와 같은 형태이다.

WITH RECURSIVE DT_TABLE AS (
    SELECT ${시작일} dt, 1 lv FROM dual
    UNION all
    SELECT DATE_ADD('2020-09-12 00:00:00', INTERVAL DT_TABLE.lv ${시간/일 단위}) dt, DT_TABLE.lv+1 AS lv FROM DT_TABLE WHERE DT_TABLE.lv < ${총 몇개나 생성하는지에 대한 카운트}
)
SELECT 
   dt
FROM DT_TABLE;

 

EX) 2020-09-12 00:00:00 부터 1시간 단위로 99개의 데이터를 생성하는 쿼리

WITH RECURSIVE DT_TABLE AS (
    SELECT '2020-09-12 00:00:00' dt, 1 lv FROM dual
    UNION all
    SELECT DATE_ADD('2020-09-12 00:00:00', INTERVAL DT_TABLE.lv HOUR) dt, DT_TABLE.lv+1 AS lv FROM DT_TABLE WHERE DT_TABLE.lv < 99 
)
SELECT 
   dt
FROM DT_TABLE;

 

EX) 2020-09-12 00:00:00 부터 하루 단위로 99개의 데이터를 생성하는 쿼리

WITH RECURSIVE DT_TABLE AS (
    SELECT '2020-09-12 00:00:00' dt, 1 lv FROM dual
    UNION all
    SELECT DATE_ADD('2020-09-12 00:00:00', INTERVAL DT_TABLE.lv DAY) dt, DT_TABLE.lv+1 AS lv FROM DT_TABLE WHERE DT_TABLE.lv < 99 
)
SELECT 
   dt
FROM DT_TABLE;
반응형