본문 바로가기
Dev/DataBase

[MariaDB] 더미데이터 - 날짜 만들기

by nakanara 2021. 5. 6.
반응형

목표일까지의 날짜 데이터가 필요하여, 반복문으로 더미 데이터 생성

WITH RECURSIVE DT_CNT AS (
    -- 목표일 
    SELECT DATEDIFF(STR_TO_DATE('21001231', '%Y%m%d'), NOW()) cnt
),     DT_TABLE AS (
    SELECT NOW() dt, 1 lv FROM dual

    UNION all

    SELECT DATE_ADD(NOW(), INTERVAL DT_TABLE.lv DAY) dt, DT_TABLE.lv+1 AS lv FROM DT_CNT, DT_TABLE WHERE DT_TABLE.lv <= dt_cnt.cnt
)
SELECT 
    dt, 
    lv, 
    DATE_FORMAT(dt, '%w') dd -- 0 - 일요일, 1 - 월, ~ 6 - 토
FROM DT_TABLE

사용 함수

  • DATEDIFF : 두 날짜 간의 요일 차 계산
SELECT DATEDIFF('날짜1', '날짜2'); -- 날짜1 - 날짜2 차이 
  • TIMESTAMPDIFF: 두 날짜 간의 차이 계산
SELECT TIMESTAMPDIFF('단위', '날짜1', '날짜2'); -- 날짜1 - 날짜2 차이 계산

-- 단위
-- SECOND: 초
-- MINUTE: 분
-- HOUR: 시
-- DAY: 일
-- MONTH: 달
-- YEAR: 년
  • DATE_ADD : DATE 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND)   -- 현재 시간에 1초 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE)   -- 현재 시간에 1분 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR)     -- 현재 시간에 1시간 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY)      -- 현재 시간에 1일 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH)    -- 현재 시간에 1달 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR)     -- 현재 시간에 1년 더하기
  • DATE_SUB : DATE 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND)   -- 현재 시간에 1초 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 MINUTE)   -- 현재 시간에 1분 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR)     -- 현재 시간에 1시간 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY)      -- 현재 시간에 1일 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH)    -- 현재 시간에 1달 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR)     -- 현재 시간에 1년 빼기

#mariadb #mysql #dummy #날짜데이터

반응형