日期:2014-05-18  浏览次数:20533 次

请教 合同中的 两列日期 批量计算出月份 在另有一列显示
请教 合同中的 两列日期 批量计算出月份 在另有一列显示  
  如开始2012-03-21  
  到期日2012-04-20 为1个月 1
  到期日2012-04-21 为2个月 2
  到期日2012-04-22 为2个月 2

  ...
  ...
不足一个月算一个月。
ID号唯一递增,请问需要怎么处理?
  --------------------------------------------
declare @sdate datetime,@edate datetime ,@id int
select @sdate =开始日期,@edate=结束日期,@id=id from cs

select 
case when
dateadd(month,DATEDIFF(month,@sdate,@edate),@sdate)<=@edate 
then
DATEDIFF(month,@sdate,@edate)+1
else
DATEDIFF(month,@sdate,@edate)
end AS M


需要用游标是吗? 怎么处理,谢谢

------解决方案--------------------
递归求两日期的差,不要用游标
------解决方案--------------------
select case when DATEDIFF(mm,'开始时间','结束时间')=0 then 1 else DATEDIFF(mm,'开始时间','结束时间') end from 表名
------解决方案--------------------
select case when DATEDIFF(dd,'开始时间','结束时间')<30 then 1 else DATEDIFF(dd,'开始时间','结束时间')/30 end from table 

这样行不
------解决方案--------------------
探讨
请教 合同中的 两列日期 批量计算出月份 在另有一列显示
如开始2012-03-21
到期日2012-04-20 为1个月 1
到期日2012-04-21 为2个月 2
到期日2012-04-22 为2个月 2

...
...
不足一个月算一个月。
ID号唯一递增,请问需要怎么处理?
----------------------------……