none
DATEADD的小小疑問 RRS feed

  • 問題

  • DATEADD(DAY,-30,' 2008/05/21 ')

    請問我用以上日期減去30天 因為我想要做時間區段的篩選

    但是所得的結果是 2008/04/21...

    正常是22號才對 我也自己看月曆對過

    為什麼會變成21號呢??

    2012年3月1日 上午 03:08

解答

  • 看起來是2008/4/21沒錯,這或許是最後一天要不要算的問題,你可以利用下列的T-SQL來模擬計算過程,希望對你有幫助:

    DECLARE @i int = -1
    WHILE @i >= -30
     BEGIN
       SELECT -(@i), DATEADD(DAY,@i,'20080521')
       SET @i = @i - 1
     END


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/



    • 已編輯 TerryChuangModerator 2012年3月1日 上午 04:00
    • 已提議為解答 小歐ouMVP 2012年3月1日 上午 05:23
    • 已標示為解答 Qoo 2012年3月1日 上午 07:11
    2012年3月1日 上午 03:54
    版主

所有回覆

  • 看起來是2008/4/21沒錯,這或許是最後一天要不要算的問題,你可以利用下列的T-SQL來模擬計算過程,希望對你有幫助:

    DECLARE @i int = -1
    WHILE @i >= -30
     BEGIN
       SELECT -(@i), DATEADD(DAY,@i,'20080521')
       SET @i = @i - 1
     END


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/



    • 已編輯 TerryChuangModerator 2012年3月1日 上午 04:00
    • 已提議為解答 小歐ouMVP 2012年3月1日 上午 05:23
    • 已標示為解答 Qoo 2012年3月1日 上午 07:11
    2012年3月1日 上午 03:54
    版主
  • 咦??原來21那天是不會算到的喔...

    我改成20080522就可以了

    真的很感謝!!

    2012年3月1日 上午 04:23