SQLSERVER2000中
select dateadd(month,6,'2008-08-28')
select dateadd(month,6,'2008-08-29')
为什麽会返回同一天 2009-02-28

解决方案 »

  1.   


    道理如上面的同学所说
    呵呵,你再试下select dateadd(month,6,'2008-08-28')
    select dateadd(month,6,'2008-08-29') 
    select dateadd(month,6,'2008-08-30') 
    select dateadd(month,6,'2008-08-31') 
      

  2.   

    你用的是month+6,但是09年2月又沒有29號,所以
    select dateadd(month,6,'2008-08-29')
    只好返回2009-02-28。
    一般來説DateAdd是不會修改返回日期的其它部分的,
    除非返回的不是合法日期了。
      

  3.   

    09年2月份 只到28号 29 30 31号不存在,只显示该月的最后一天28select dateadd(month,6,'2008-08-27') 
      

  4.   

    那不就不好用DateAdd(month, , )了。
    DateAdd(month,'2008-08-31 23:59:59','2008-09-01 00:00:00')=1
    實際上只隔了1秒,你不能說他的証就過期了吧!
    建議以天來計算有效期。
    記得以前上大學的時候幫學校圖書館做的就是這麽做的,一個月就是30天,一年就是365天。
    幾個月就用30天乘幾,幾年就用365天乘幾。