반응형
목표일까지의 날짜 데이터가 필요하여, 반복문으로 더미 데이터 생성
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 #날짜데이터
반응형
'Dev > DataBase' 카테고리의 다른 글
[MariaDB] ERROR 1118 (42000) Row Size 오류 (0) | 2021.12.30 |
---|---|
[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. (0) | 2021.06.07 |
[MariaDB] 패스워드 초기화 (0) | 2021.05.04 |
[MariaDB] 다중 인스턴스 실행 (0) | 2021.03.25 |
[MariaDB] 컬럼명 추출 (0) | 2021.02.03 |