2012-05-08 40 views
0

是否可以修改日期的某一天而不必使用DateAdd或必須計算日期差異?修改日期無DateAdd或DateDiff

SET @ReturnDate = '5/16/2012' 

SET @ModifyDay = 20 

修改只1620

結果應該是5/20/2012

這樣做的原因是我翻譯的VB代碼到一個存儲過程:

Dim InvDate_Day_of_Month As Integer = CInt(Day(InvDate)) 
    PaymentDate = DateAdd(DateInterval.Month, 1, InvDate) 
    PaymentDate = New Date(PaymentDate.Year, PaymentDate.Month, DayofTheMonth) 
+0

如果您發佈的代碼,XML或數據樣本**,請在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」),以便對其進行精確格式化和語法突出顯示! –

+4

你有什麼反對'DATEADD'? – Oded

+0

其他數據庫提供日期構造函數。在SQL Server中,最好的方法是使用字符串函數,例如:cast(替換(@ReturnDate,'/ 16 /','/ 20 /')作爲日期)。 –

回答

2
SET @ReturnDate = @ReturnDate + (@ModifyDay - DATEPART(day, @ReturnDate)) 
1

如果您只是想在日期中添加4天,則可以直接添加4到它:

DECLARE @ReturnDate DATETIME; 
SET @ReturnDate = '5/16/2012' 

SELECT @ReturnDate, @ReturnDate + 4 

這將選擇 2012-05-16 00:00:00.000和2012-05-20 00:00:00.000