首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么计算两个时间参数之间的年,月,天 的差数

2013-04-20 
如何计算两个时间参数之间的年,月,天 的差数?to_number(to_char(sysdate,yyyy)) - to_number(to_char(da

如何计算两个时间参数之间的年,月,天 的差数?
to_number(to_char(sysdate,'yyyy')) - to_number(to_char(day1,'yyyy')) as yeardel ,
to_number(to_char(sysdate, 'mm'))   -   to_number(to_char(day1, 'mm')) as mothdel,
to_number(to_char(sysdate, 'dd'))   -   to_number(to_char(day1, 'dd')) as daydel 

这样是年月日,分开来相减的,这样减出来后,月和日 可能有负数,所以还得判断。假如day1的值为2008-12-3 则结果是 年3,月-1,日4  而不是 年2,月11,日4  
 所以想用其他的办法.
trunc((months_between(trunc(sysdate,'dd'), day1))/12) as year  这样,结果是单纯的年,并且是正确的年.我想用这种类似的函数计算出月和日.   可是不知道怎么使用函数??
[解决办法]
你可以用绝对值函数嘛。
[解决办法]
看看这里 自己定义oracel里的datediff函数
http://sarsea456.blog.163.com/blog/static/93153620201062744412925/
[解决办法]
月数差:


with temp as(
select to_date('2006-05-01','yyyy-mm-dd') time2,to_date('2009-06-08','yyyy-mm-dd') time1 from dual
union all
select to_date('2008-12-01','yyyy-mm-dd') time2,to_date('2010-02-10','yyyy-mm-dd') time1 from dual
)
select case when to_number(to_char(time1,'MM')) - to_number(to_char(time2,'MM')) >= 0 
then to_number(to_char(time1,'MM')) - to_number(to_char(time2,'MM'))
else to_number(to_char(time1,'MM'))+12 - to_number(to_char(time2,'MM')) + 1
end 相差月数
 from temp

热点排行