+ -
当前位置:首页 → 问答吧 → 求一函数,sql转oracle的

求一函数,sql转oracle的

时间:2011-09-15

来源:互联网

SQL code
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的转化语句写好。

作者: gbys   发布时间: 2011-09-15

create or replace function INTTODATE(in_date IN NUMBER)
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;

作者: yixilan   发布时间: 2011-09-15

SQL code

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;

作者: hanzs   发布时间: 2011-09-15

SQL code

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

作者: opps_zhou   发布时间: 2011-09-15

热门下载

更多