유령노트
데이터 없이 해당 일별, 월별 구하기 본문
10분별
1
2
3
4
5
6
7
8
|
SELECT
DATE_FORMAT(DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-%d'), INTERVAL (t4.num * 100 + t3.num * 10 + t2.num) * 10 MINUTE), '%Y-%m-%d %H:%i') AS date
FROM
(SELECT 0 AS num 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 AS num 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 AS num 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
WHERE
DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-%d'), INTERVAL (t4.num * 100 + t3.num * 10 + t2.num) * 10 MINUTE) < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
|
cs |
일별
1
2
3
4
5
6
7
8
9
|
SELECT
DATE_FORMAT(DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL (t4.num * 1000 + t3.num * 100 + t2.num * 10 + t1.num) DAY), '%Y-%m-%d') AS date
FROM
(SELECT 0 AS num 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 AS num 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 AS num 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 AS num 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
WHERE
DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL (t4.num * 1000 + t3.num * 100 + t2.num * 10 + t1.num) DAY) <= LAST_DAY(CURDATE())
|
cs |
일별 범위지정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | SELECT DATE_FORMAT(calendar_date, '%Y-%m-%d') AS date FROM ( SELECT DATE_ADD(SUBDATE(CURDATE(), INTERVAL 1 MONTH), INTERVAL (units.num * 100 + tens.num * 10 + ones.num) DAY) AS calendar_date FROM (SELECT 0 AS num 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) AS units CROSS JOIN (SELECT 0 AS num 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) AS tens CROSS JOIN (SELECT 0 AS num 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) AS ones WHERE DATE_ADD(SUBDATE(CURDATE(), INTERVAL 1 MONTH), INTERVAL (units.num * 100 + tens.num * 10 + ones.num) DAY) < CURDATE() ) AS calendar ORDER BY calendar_date | cs |
월별
1
2
3
4
5
6
7
8
9
|
SELECT
DISTINCT DATE_FORMAT(DATE_ADD(DATE_FORMAT(CONCAT(DATE_FORMAT(CURDATE(), '%Y'), '-', (t4.num*100 + t3.num*10 + t2.num), '-01'), '%Y-%m-%d'), INTERVAL (t1.num-1) DAY), '%Y-%m') AS date
FROM
(SELECT 1 AS num UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) t1
, (SELECT 0 AS num 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 AS num 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 AS num 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
WHERE
DATE_ADD(DATE_FORMAT(CONCAT(DATE_FORMAT(CURDATE(), '%Y'), '-', (t4.num*100 + t3.num*10 + t2.num), '-01'), '%Y-%m-%d'), INTERVAL (t1.num-1) DAY) <= LAST_DAY(CONCAT(DATE_FORMAT(CURDATE(), '%Y'), '-', (t4.num*100 + t3.num*10 + t2.num), '-01'))
|
cs |
월별 범위지정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
SELECT DISTINCT
DATE_FORMAT(calendar_date, '%Y-%m') AS date
FROM
(
-- 서브쿼리를 활용하여 날짜를 생성하고, 시작일자와 종료일자 범위 내의 날짜만 선택함
SELECT
ADDDATE('시작일자', INTERVAL n MONTH) AS calendar_date
FROM
(
-- 연속적인 숫자를 생성하여 월 계산에 활용
SELECT
(t2.num * 10 + t1.num) AS n
FROM
(SELECT 0 AS num 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 AS num 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
) AS months
WHERE
ADDDATE('시작일자', INTERVAL n MONTH) <= '종료일자'
) AS calendar
ORDER BY
calendar_date
|
cs |
'# Dev > SQL' 카테고리의 다른 글
Oracle, Mysql 중복 제거용 쿼리 (0) | 2019.01.24 |
---|---|
쿼리 정규식으로 영어 숫자 한글 구분법 (0) | 2018.02.19 |
날짜 사이 검색 및 조건 1개일시 이상 이하 검색 가능 (0) | 2017.12.06 |
mysql 컬럼 찾기 (0) | 2017.10.15 |
년 월로 년 월 단위 일자 구하기 sql (0) | 2017.06.19 |