본문 바로가기

SQL

MySql에서 날짜 테이블 비슷한거 만들기

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