在一个表中有如下的字段:
2009-04-15   2009-12-25
2009-09-10   2009-12-25
2009-11-30   2009-12-25
2009-12-17   2009-12-25
2009-11-30   2009-12-25
2010-02-19   2009-12-26
现在怎么来计算它们的间隔呢天数呢

解决方案 »

  1.   

    use tempdb
    if object_id('tb') is not null drop table tb
    go
    create table tb([d1] datetime,[d2] datetime)
    insert into tb
    select '2009-04-15','2009-12-25' union all
    select '2009-09-10','2009-12-25' union all
    select '2009-11-30','2009-12-25' union all
    select '2009-12-17','2009-12-25' union all
    select '2009-11-30','2009-12-25' union all
    select '2010-02-19','2009-12-26' 
    go
    select *,days=abs((datediff(day,d1,d2))) from tb
    /*
    d1                       d2                       days
    -----------------------  -----------------------  -----------
    2009-04-15 00:00:00.000  2009-12-25 00:00:00.000  254
    2009-09-10 00:00:00.000  2009-12-25 00:00:00.000  106
    2009-11-30 00:00:00.000  2009-12-25 00:00:00.000  25
    2009-12-17 00:00:00.000  2009-12-25 00:00:00.000  8
    2009-11-30 00:00:00.000  2009-12-25 00:00:00.000  25
    2010-02-19 00:00:00.000  2009-12-26 00:00:00.000  55
    */
      

  2.   

    select datediff(day,date1,date2)
    例如
    select datediff(day,'2009-09-10','2009-09-20')
      

  3.   

    DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得出两个日期之间的间隔。结果是等于 date2 - date1 的日期部分的带符号整数值。
    测试见一楼!
      

  4.   

    DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得出两个日期之间的间隔。结果是等于 date2 - date1 的日期部分的带符号整数值。
      

  5.   

    实际中我的字段是两个查询结果,那么如下出现了转换时出错
    datediff(day,cast('select B.DischargeDate from BalanceRecord' as datetime),cast('select B.BalanceDate from BalanceRecord' as datetime))