在SQL server 中DATEDIFF函数,在Oracle中用下面的在oracle里建立个函数转化下
2009-02-12 16:30
393 查看
create or replace function
-- -- works in roughly the same way as sybase datsdiff
-- call would be eg. datediff( 'month ',date1,date2)
-- p_what would be 'HOUR ', 'DAY ', 'MONTH ' OR 'QUARTER '
datediff( p_what in varchar2,
p_d1 in date,
p_d2 in date ) return number
as
l_result number;
begin
l_result:=null;
if (upper(p_what) = 'MINUTE') then
l_result:=((p_d2-p_d1)*24*60);
end if;
if (upper(p_what) = 'HOUR') then
l_result:=((p_d2-p_d1)*24);
end if;
if (upper(p_what) = 'DAY') then
l_result:=(p_d2-p_d1);
end if;
if (upper(p_what) = 'MONTH') then
l_result:=round(MONTHS_BETWEEN(p_d2,p_d1),0);
end if;
if (upper(p_what) = 'QUARTER') then
l_result:=((floor(MONTHS_BETWEEN(p_d2,TRUNC(p_d2, 'YEAR '))/3)+1) - (floor(MONTHS_BETWEEN(p_d1,TRUNC(p_d1, 'YEAR '))/3)+1) + (((to_char(p_d2, 'yyyy ')) - (to_char(p_d1, 'yyyy ')))*4));
end if;
l_result:=floor(l_result);
return l_result;
end;
SQL> SELECT DATEDIFF( 'MONTH', '11-JUL-1975 ', '07-JUN-2004 ') FROM DUAL;
DATEDIFF( 'MONTH', '11-JUL-1975 ', '07-JUN-2004 ')
-- -- works in roughly the same way as sybase datsdiff
-- call would be eg. datediff( 'month ',date1,date2)
-- p_what would be 'HOUR ', 'DAY ', 'MONTH ' OR 'QUARTER '
datediff( p_what in varchar2,
p_d1 in date,
p_d2 in date ) return number
as
l_result number;
begin
l_result:=null;
if (upper(p_what) = 'MINUTE') then
l_result:=((p_d2-p_d1)*24*60);
end if;
if (upper(p_what) = 'HOUR') then
l_result:=((p_d2-p_d1)*24);
end if;
if (upper(p_what) = 'DAY') then
l_result:=(p_d2-p_d1);
end if;
if (upper(p_what) = 'MONTH') then
l_result:=round(MONTHS_BETWEEN(p_d2,p_d1),0);
end if;
if (upper(p_what) = 'QUARTER') then
l_result:=((floor(MONTHS_BETWEEN(p_d2,TRUNC(p_d2, 'YEAR '))/3)+1) - (floor(MONTHS_BETWEEN(p_d1,TRUNC(p_d1, 'YEAR '))/3)+1) + (((to_char(p_d2, 'yyyy ')) - (to_char(p_d1, 'yyyy ')))*4));
end if;
l_result:=floor(l_result);
return l_result;
end;
SQL> SELECT DATEDIFF( 'MONTH', '11-JUL-1975 ', '07-JUN-2004 ') FROM DUAL;
DATEDIFF( 'MONTH', '11-JUL-1975 ', '07-JUN-2004 ')
相关文章推荐
- oracle 类型转化函数
- PLSQL: Oracle函数to_char转化数字型指定小数点位数的技巧
- PLSQL: Oracle函数to_char转化数字型指定小数点位数的技巧
- ORACLE中的支持正则表达式的函数主要有下面四个:
- oracle下wm_concat源码(ps:如果有些版本的oracle不支持此函数,只要执行下下面的语句即可)
- Oracle通过函数进行进制转化
- QT中用函数把float转化成QString
- oracle 时间转化函数及常见函数
- oracle 时间转化函数及常见函数 .
- oracle 中各种函数 转化函数 字符串函数,日期函数,数值函数
- oracle 中各种函数 转化函数 字符串函数,日期函数,数值函数
- ORACLE和SQLSERVER中部分时间转化函数 详细版
- Oracle中时间日期转化函数to_date和to_char用法总结
- Oraclec常用函数 (数值转化及计算)
- Oracle Function 自定义函数建立实例
- Oracle中用pl/sql实现货币数字格式到汉字格式的转化
- 【Oracle 11g】利用基于函数的索引只对部分行建立索引
- 动态链接库是如何建立的(3)如何查看到导出了那些函数?如何查看导入了哪些函数?
- 【原创】ORACLE的几个函数在MYSQL里面的简单实现
- Oracle函数大全