create or replace
function INTTODATE(@date int)
returns datetime
as
begin
declare @datetime datetime
set @datetime = dateadd(dd,right(@date,3)-1,cast(rtrim(1900+left(@date,3))+'0101' as datetime))--sql语句
--to_date(trunc(yadob/1000)+1900||'-01-01','yyyy-mm-dd')+mod(yadob,1000)-1(oracle语句)
return @datetime
end
go
此函数的作用是输入一个int,输出一个date值。比如110001,前三位表示世纪和年,1900+110=2010年,后三位表示这一年的某一天。001是1月1号,002是1月2号,如此类推。这个函数是sql下的,如何转化成oracle函数?谢谢。
备注:语句中已经把oracle的转化语句写好。
function INTTODATE(@date int)
returns datetime
as
begin
declare @datetime datetime
set @datetime = dateadd(dd,right(@date,3)-1,cast(rtrim(1900+left(@date,3))+'0101' as datetime))--sql语句
--to_date(trunc(yadob/1000)+1900||'-01-01','yyyy-mm-dd')+mod(yadob,1000)-1(oracle语句)
return @datetime
end
go
此函数的作用是输入一个int,输出一个date值。比如110001,前三位表示世纪和年,1900+110=2010年,后三位表示这一年的某一天。001是1月1号,002是1月2号,如此类推。这个函数是sql下的,如何转化成oracle函数?谢谢。
备注:语句中已经把oracle的转化语句写好。
return date
is
vd_datetime date;
begin
vd_datetime := to_date(trunc(in_date/1000)+1900||'-01-01','yyyy-mm-dd')+mod(in_date,1000)-1;
return vd_datetime;
END;
create or replace function INTTODATE(in_date in number)
return date
is
vd_datetime date;
begin
vd_datetime := to_date(to_char(trunc(in_date/1000)+1900)||'-01-01','yyyy-mm-dd')+mod(in_date,1000)-1; --最好加下to_char
return vd_datetime;
end;
create or replace function INTTODATE
(
indate number
)
return date
as
begin
return to_date(1900000 + indate,'yyyyddd');
end INTTODATE;SQL> select INTTODATE(110001) from dual;
INTTODATE(110001)
-----------------
2010-1-1