今日(2011-12-27)一哥们(Oracle 10.2.0)碰到一Oracle间隔日期计算问题,原意是给出两个日期,获取两个日期之间的间隔数值,返回形如格式:x年x月x日,类似倒计时工具计时器。这里权当作个记录,当时使用到了Oracle 数据类型interval来做处理,因为参数传递的问题,没有奏效,最后使用内置函数解决,这里仅此作个记录,下次留用。主要是要考虑到闰年、闰月、每个月的不同天数问题。,贴出函数脚本
create or replace function fn_interval_ymd(d2 date,d1 date) return varchar2
is
year_ number;
month_ number;
day_ number;
temp_date date;
date2 date:=d2;
date1 date:=d1;
begin
if date1-date2>0 then
temp_date:=date2;
date2:=date1;
date1:=temp_date;
end if;
year_ :=floor(months_between(date2,date1)/12);
month_:=floor(months_between(date2,(date1+NUMTOYMINTERVAL(year_, 'year'))));
day_ :=date2-((date1+NUMTOYMINTERVAL(year_, 'year'))+NUMTOYMINTERVAL(month_, 'month'));
return lpad(year_,4,'0')||'年'||lpad(month_,2,'0')||'月'||lpad(day_,2,'0')||'日';
exception
when others then
dbms_output.put_line('Input date format exception!');
return '';
end;
测试效果:
select fn_interval_ymd(sysdate,sysdate-1000) from dual;
----------
0002年08月26日
----------
select fn_interval_ymd(to_date('2008-05-01','yyyy-mm-dd'),
to_date('2006-04-21','yyyy-mm-dd')) from dual;
0002年00月10日
----------
select fn_interval_ymd(to_date('2008-02-11','yyyy-mm-dd'),
to_date('2008-03-05','yyyy-mm-dd')) from dual;
----------
0000年00月23日
健壮性效果不知道到底如何,还要进一步测试。
分享到:
相关推荐
计算指定间隔的Excel日期.rar,Excel的日期是数字的一种特殊显示格式,因此用户能够以天为单位对日期值进行加减运算,并设置单元格格式为所需日期格式。本例内容包括:1、计算指定间隔后的日期;2、闰年判断。
主要为大家详细介绍了java日期操作工具类,包括获取指定日期、日期转换、相隔天数等操作,感兴趣的小伙伴们可以参考一下
Access日期间隔查询.rar
易语言Access日期间隔查询源码,Access日期间隔查询
使用C++语言编辑,可以查询任意日期之间的间隔天数.在windows\linux环境下均可运行的程序。
C#日期间隔计算,能计算年,月,天,Datetime。 输入两个日期,能计算两个日期相差多少年,多少月,多少天。。。
Labview 日期时间标识间隔计算天数或小时数,指定加长日期计算。 例:比较D1和D2两个不同日期间的天数或小时数, D1基础上加5天的日期,可用于计划控制,定时控制等。
Java间隔指定记录数获取数据库中的数据,避免数据量过大,一次取出所有数据再间隔获取造成内存崩溃等情况。代码简单,每一步都附加有注释。
主要为大家详细介绍了java获取指定开始时间与结束时间之间的所有日期,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
demo利用时间戳获取间隔时间,可以在UI上看到具体变化
一个简易的多线程控制台程序用命令行的方式在间隔时间内获取指定网站的数据并保存
改程序可以实现的功能有万年历,日期间隔,以及计算某一天的星期,,运行环境是C++ Builder 6
个人在进行C语言复习期间编写的一个进行日期计算的程序(算法优化),主要功能有:选择菜单,两个日期求间隔,按天数往后计算日期,按天数往前计算日期,功能循环。主要用了函数,指针,结构体等知识
易语言Access日期间隔查询.rar 易语言Access日期间隔查询.rar 易语言Access日期间隔查询.rar 易语言Access日期间隔查询.rar 易语言Access日期间隔查询.rar 易语言Access日期间隔查询.rar
java获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)、获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)、指定天的开始和结束日期、返回某个日期前几天的日期并转换成字符串
里面包含Excel表格的读取,注册表的操作,获取时间间隔(days,hours,minutes,Seconds)
计算时间日期间隔案例 此案例是计算一个补休天数,其他功能可以自己修改!
获取两个日期间隔时间的shell脚本,对于正在研究shell操作日期的朋友来讲,这个小例子,值得研究
内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关的方法,如:获取指定日期几天后的日期;...
易语言源码Access日期间隔查询.rar