MSSQL에는 master..spt_values라는게 있어서 날짜를 뽑을 수 있다.
MySql에는 이런 게 없어서.. 어떻게 할까 고민하다가 구글링 중 발견한 방법!
1. 일단 테이블이 필요하다.
CREATE TABLE TBL_NUMBERS (
`id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
);
2. 데이터를 넣어준다. 나는 100개 넣었음.. 필요에 따라~!
DELIMITER $$
DROP PROCEDURE IF EXISTS FILL_NUMBERS;
CREATE PROCEDURE FILL_NUMBERS()
BEGIN
/* MYSQL에는 MSSQL의 master spt_values 같은 날짜 테이블이 없으므로 NUMBERS 테이블을 기준으로
SELECT
T1.*
FROM (SELECT DATE_ADD('2010-06-06', INTERVAL id - 1 HOUR)
FROM TBL_NUMBERS
WHERE DATE_ADD('2010-06-06', INTERVAL id -1 HOUR) <= '2010-06-14' ) T1
이런 식으로 날짜 가져온다. */
DECLARE i INT DEFAULT 1;
WHILE i <= 100 DO
INSERT INTO TBL_NUMBERS ( `id` ) VALUES ( NULL );
SET i = i + 1;
END WHILE;
END$$
DELIMITER ;
CALL FILL_NUMBERS();
쿼리 결과
2010-06-06 00:00:00
2010-06-06 01:00:00
2010-06-06 02:00:00
2010-06-06 03:00:00
2010-06-06 04:00:00
.
.
.
이런식으로 날짜 가져오는 게 가능!
덕분에 아주 유용하게 써먹음!
'SQL' 카테고리의 다른 글
Oracle dynamic date 오라클 동적 시간 만들기 (0) | 2017.06.28 |
---|---|
IINNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN (0) | 2017.02.15 |
ORACLE WITH (0) | 2017.01.25 |
ms-sql 재귀쿼리 (0) | 2016.12.19 |
MySql Character set (0) | 2016.12.16 |