Informix中把时间差转化成秒以及秒转化成时间(s)转化成时间格式

--1. sec2datetime -----------
create procedure sec2datetime(sec integer)
   returning varchar(44);
  define re_date varchar(44);
  define days integer;
  define hours integer;
  define minutes integer;
  define seconds integer;
  define temp integer;
  define cdays varchar(10);
  define chours varchar(10);
  define cminutes varchar(10);
  define cseconds varchar(10);

 let temp = trunc(sec/(60*60*24),0);
 let days =temp;

 let temp =trunc((sec -60*60*24*days)/(60*60),0);
 let hours =temp;

 let temp =trunc((sec -60*60*24*days -60*60*hours)/60,0);
 let minutes = temp;

 let seconds =mod(sec -60*60*24*days -60*60*hours,60);

 let cdays =days;
 let chours = hours;
 let cminutes = minutes;
 let cseconds =seconds;

 if length(cdays)=1 then
    let cdays ='0'||cdays;
 end if ;

 if length(chours)=1 then
    let chours ='0'||chours;
 end if ;

 if length(cminutes)=1 then
    let cminutes ='0'||cminutes;
 end if ;

 if length(cseconds)=1 then
    let cseconds ='0'||cseconds;
 end if ;

 let re_date =cdays||' '||chours||':'||cminutes||':'||cseconds;

 return re_date;

end procedure ;

--2.datetime2sec -----------
create procedure datetime2sec(dt datetime year to second,dt1 datetime year to second)
returning numeric(8,2);
define sec_o numeric(8,2);
define int_day interval day(9) to second;
define days integer;
define hours integer;
define minutes integer;
define seconds integer;
define temp varchar(100);
define temp_dt datetime year to second;

let int_day = dt1 - dt;

let temp_dt=datetime(1900-01-01 00:00:00)  year to second + int_day;
let temp = extend(temp_dt,day to day);
let days = temp -1;
let temp = extend(temp_dt,hour to hour);
let hours = temp + 0;
let temp = extend(temp_dt,minute to minute);
let minutes = temp + 0;
let temp = extend(temp_dt,second to second);
let seconds = temp  +0;
let sec_o = (days * 86400 + hours * 3600 + minutes * 60 + seconds);

return sec_o;
end procedure;

posted on 2007-04-27 18:05  Sophist  阅读(2198)  评论(0编辑  收藏  举报

导航