比较两个日期相差的月份。
DateDiff(month,'2006-09-30','2006-10-01')结果竟然是1,
而Oracle的SELECT months_between(to_date('2006-10-01','yyyy-mm-dd'), to_date('2006-09-30','yyyy-mm-dd')) FROM DUAL结果是:0.0645161290322581。在SQL Server中如何精确比较两个日期的月份差异呢?

解决方案 »

  1.   

    cast(DateDiff(day,'2006-09-30','2006-10-01') / 30  as decimal(18,2))
    cast(DateDiff(day,'2006-09-30','2006-10-01') / 31  as decimal(18,2))
      

  2.   

    cast(DateDiff(day,'2006-09-30','2006-10-01') / datediff(dd , '2006-10-01', dateadd(mm, 1, '2006-10-01' ))  as decimal(18,2))cast(DateDiff(day,'2006-09-30','2006-10-01') / datediff(dd , '2006-09-30', dateadd(mm, 1, '2006-09-30' ))  as decimal(18,2))
      

  3.   

    select cast(DateDiff(day,'2006-09-30','2006-10-01') * 1.0 / datediff(dd , '2006-10-01', dateadd(mm, 1, '2006-10-01' ))  as decimal(18,8))select cast(DateDiff(day,'2006-09-30','2006-10-01') * 1.0 / datediff(dd , '2006-09-30', dateadd(mm, 1, '2006-09-30' ))  as decimal(18,8))
      

  4.   

    DATEDIFF
    返回跨两个指定日期的日期和时间边界数。 
    返回类型
    integer