定义一个函数of_relativedatetime(datetime adtm_start,long al_offset)returns datetime
datetime ldtm_null
date ld_sdate
time lt_stime
long ll_date_adjust
long ll_time_adjust,ll_time_test
if isnull(adtm_start) or isnull(al_offset) then
setnull(ldtm_null)
return ldtm_null
end if
if not of_isvalid(adtm_start) then
return ldtm_null
end if
ld_sdate=date(adtm_start)
lt_stime=time(adtm_start)
ll_date_adjust=al_offset/86400
ll_time_adjust=mod(al_offset,86400)
ld_sdate=relativedate(ld_sdate,ll_date_adjust)
if ll_time_adjust>0 then
ll_time_test=secondsafter(lt_stime,time('23:59:59'))
if ll_time_test>ll_time_adjust then
ld_sdate=relativedate(ld_sdate,1)
ll_time_adjust=ll_time_adjust - ll_time_test - 1
lt_stime=time('00:00:00')
end if
lt_stime=relativetime(lt_stime,ll_time_test)
elseif ll_time_adjust<0 then
ll_time_test=secondsafter(lt_stime,time('00:00:00'))
if ll_time_test>ll_time_adjust then
ld_sdate=relativedate(ld_sdate, -1)
ll_time_adjust=ll_time_adjust - ll_time_test +1
lt_stime=time('23:59:59')
end if
lt_stime=relativetime(lt_stime,ll_time_test)
end if
return datetime(ld_sdate,lt_stime)