如何计算两个时间之间相差月数?

huang_w 2010-08-06 09:24:16
我现在有两个时间,时间A ,时间B
其中A总是大于B的
现在我想计算B和A之间月份之差。
比如:B 为2006-05-01 A 为 2009-06-08
月份之差结果:1
B为2008-12-01 A为2010-02-10
月份之差结果:3
如何写个公式放入两个时间得到正确的结果?
谢谢!
...全文
357 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huang_w 2010-08-06
  • 打赏
  • 举报
回复
错了 B为2008-12-01 A为2010-02-10 那个应该是2
小灰狼W 2010-08-06
  • 打赏
  • 举报
回复
为何得出的结果为1和3?
huang_w 2010-08-06
  • 打赏
  • 举报
回复
谢谢大家 !
kingkingzhu 2010-08-06
  • 打赏
  • 举报
回复
看错了 呵呵 1楼可以
duqiangcise 2010-08-06
  • 打赏
  • 举报
回复
select trunc(to_date('2010-02-10','yyyy-MM-dd'),'mm') - trunc(to_date('2008-12-01','yyyy-MM-dd'),'mm') from dual;
kingkingzhu 2010-08-06
  • 打赏
  • 举报
回复
months_between

B为2008-12-01 A为2010-02-10
月份之差结果:3
???
Phoenix_99 2010-08-06
  • 打赏
  • 举报
回复
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

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧