1. 程式人生 > >PL/SQL 按小時間隔生成一年的時間資料

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,
'HH24');
             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