본문 바로가기

SQL

가상 테이블 날짜 순서대로 나오게 하기

WITH RECURSIVE cte AS (
SELECT  now() as m
UNION ALL
SELECT date_add(m,interval -1 month) FROM cte WHERE date_add(m,interval -1 month) >= date_add(now(),interval -12 month)
)SELECT Date_format(m,'%Y-%m') FROM cte

오늘로부터 1년 전까지 포맷 2022-01 으로 출력
/////
WITH RECURSIVE t as (

   SELECT concat(YEAR(now()),'-01-01') as dt

UNION

   SELECT DATE_ADD(t.dt, INTERVAL 1 month) FROM t WHERE DATE_ADD(t.dt, INTERVAL 1 month) <   concat(YEAR(DATE_ADD(now(),INTERVAL 1 YEAR)),'-01-01')

)

SELECT DATE_format(dt,'%Y-%m') FROM t;

 

오늘의 해당 연도의 1월부터 12월까지 출력