PL/SQL 按小時間隔生成一年的時間資料
Tbltime表結構:
YEAR_WEEK VARCHAR2(10) Y
UPDATE_DATE VARCHAR2(10) Y
HOUR VARCHAR2(10) Y
生成資料的SQL:
declare
v_week number;
v_hour number;
v_date varchar(10);
v_datetime date
begin
v_datetime := to_date('2012-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS');
while v_datetime<=to_date('2012-12-31 23:00:00','YYYY-MM-DD HH24:MI:SS')loop
v_week := '2012' || to_char(v_datetime,'WW');
v_date := to_char(v_datetime,'YYYY-MM-DD');
v_hour := to_char(v_datetime,
insert into tbltime values(v_week,v_date,v_hour);
v_datetime := v_datetime + 1/24;
end loop;
end;
MYSQL版本:
BEGIN
declare dd datetime;
declare yw double;
declare yd date;
declare yh int;
set dd=date('2012-01-01 00:00:00');
while dd < date('2012-12-31 23:00:00') do
set yw=yearweek(dd);
set yd=date(dd);
set yh=hour(dd);
insert into tbltime (YEARWEEK,DATE,HOUR) values (yw,yd,yh);
set dd=date_add(dd, interval 1 hour);
end while;
END