2016-07-12 7 views
0

임 : 앞으로 십년 10 년 전다음 필드 MySQL의 테이블을 만들려고 노력

분 년, 월, 일,시,.

나는 일을 만듭니다이있다, 그러나 그것은 시간과 분을 포함 나던

SET @d0 = "2012-01-01"; 
SET @d1 = "2012-12-31"; 

SET @date = date_sub(@d0, interval 1 day); 

# set up the time dimension table 
DROP TABLE IF EXISTS time_dimension; 
CREATE TABLE `time_dimension` (
`date` date DEFAULT NULL, 
`id` int NOT NULL, 
`y` smallint DEFAULT NULL, 
`m` smallint DEFAULT NULL, 
`d` smallint DEFAULT NULL, 
`yw` smallint DEFAULT NULL, 
`w` smallint DEFAULT NULL, 
`q` smallint DEFAULT NULL, 
`wd` smallint DEFAULT NULL, 
`m_name` char(10) DEFAULT NULL, 
`wd_name` char(10) DEFAULT NULL, 
PRIMARY KEY (`id`) 
); 

# populate the table with dates 
INSERT INTO time_dimension 
SELECT @date := date_add(@date, interval 1 day) as date, 
# integer ID that allows immediate understanding 
date_format(@date, "%Y%m%d") as id, 
year(@date) as y, 
month(@date) as m, 
day(@date) as d, 
date_format(@date, "%x") as yw, 
week(@date, 3) as w, 
quarter(@date) as q, 
weekday(@date)+1 as wd, 
monthname(@date) as m_name, 
dayname(@date) as wd_name 
FROM T 
WHERE date_add(@date, interval 1 day) <= @d1 
ORDER BY date 
; 

내가 어떻게 수정할 수 있도록 그것은 또한 시간과 분을합니까? 감사합니다.

+0

여기에 타임 스탬프를 사용하지 않으려는 이유가 있습니까? 많은 다른 시간 구성 요소를 관리하는 것이 어느 시점에서 더러워 질 수 있다고 생각합니다. –

+0

하지만 whhhyyyyy? 오, 인류 :-( – Strawberry

+0

20 년 내에 매분의 시간 기록을 저장하는 테이블의 목적은 무엇입니까? – BeetleJuice

답변

2

시간 차원을 선택하는 경우 날짜 및 시간 차원을 분리하고 둘 다 결합하여 차원에 대한> 10m 레코드가되도록하고 날짜 및 시간 차원을 분리하면 날짜 차원 및 날짜 차원에 7300 행이 제공됩니다. 1440 행을 Time Dimension (시/분)에 입력하면 Date Dimension으로 설계하는 것과 같은 방식으로 Fact 테이블의 Time Dimension에 foregin 키가 필요합니다.

+0

따옴표가있는 표와 조인하고 그 좋은 생각을 할 수 있습니다! 감사! 이 치수를 어떻게 만들 수 있습니까? –

+0

@gabrielmellace이 Q의 스크립트가 mysql에서 작동하는 것처럼 보입니다. http://stackoverflow.com/questions/6413175/time-dimension-fill-problem – mcha

+0

몇 초만에 수정할 수있는 방법을 알고 계십니까? –

관련 문제