2013-08-02 40 views
2

有了這個:GETDATE -1或2

CONVERT(varchar(10),DATEADD(month,1,GETDATE()),120) 

我得到這個

2013-08-19 

這是完美的,但我也需要輸出一兩天少

例如:2013-08-18

任何提示?

+0

您是否嘗試在您的'getdate()'中使用'-1'或'-2'?你有沒有嘗試另一個'dateadd'? – Taryn

+3

你什麼時候減一天,什麼時候減二? –

+1

OP我不明白你可能會問這個問題。您已經在使用DATEADD功能!您知道DATEADD存在並正在使用它來添加一個月。只需減去一天。 – Zane

回答

1

如果您將dateadd的結果減去1或2,則應該獲得所需的輸出。

CONVERT(varchar(10),DATEADD(month,1,GETDATE())-1,120) 

CONVERT(varchar(10),DATEADD(month,1,GETDATE())-2,120) 
+0

請小心隱式日期加載。這個數學適用於從日期時間或smalldatetime增加/減少日期,但如果您稍後更改爲較新的類型,如日期,日期時間2,日期時間偏移... –

+0

這完全奏效。欣賞它。 – user2646056

0

什麼

CONVERT(varchar(10),dateadd(day, -1, DATEADD(month,1,GETDATE())),120) 

+0

我也喜歡那種格式。當需要更改時容易接受。謝謝。 – user2646056

+0

比日期時間直接減1或2更安全(如果您更改數據類型) –

2
select CONVERT(varchar(10),DATEADD(MONTH, 1, GETDATE())-1,120) 

select CONVERT(varchar(10),DATEADD(MONTH, 1, GETDATE())-2,120) 
+0

這與以上@traxs的回答有什麼不同? –

5

在第1天少,你可以使用

Select CONVERT(varchar(10),(dateadd(dd, -1, getdate())),120) 

或2天差使用

Select CONVERT(varchar(10),(dateadd(dd, -2, getdate())),120) 

轉換將使你所尋求的格式和DATEADD將改變DD或者以-1或2爲基準的那一天,無論您當時想要使用哪一個。