2017-08-26 56 views
2

我想打印JUL這個查詢返回AUG需要上個月得到的只有3個字母JUL在SQL

declare @a varchar(19) 

set @a = left(datename(month, getdate()), 3) 

print @a 

但是,當我寫我的代碼

declare @a varchar(19) 

set @a = left(datename(month, getdate()), 3) - 1 

print @a 

我收到一個錯誤:

Msg 245, Level 16, State 1, Line 3
Syntax error converting the nvarchar value 'Aug' to a column of data type int.

回答

5

您需要第一減去1一個月當前日期,THEN將其轉換爲「日期名」:

DECLARE @a VARCHAR(19) 

SET @a = LEFT(DATENAME(MONTH, DATEADD(MONTH, -1, SYSDATETIME())), 3) 

PRINT @a 
+0

謝謝! marc它工作正如我所料,只是我們必須編輯sysdatetime到getdate() –

+0

@RedDevil:'SYSDATETIME()'應該在SQL Server 2008中可用,並且它優於'GETDATE()' –

+0

這很酷:)。我沒有想過dateadd()+1 – jophab

1

getdate()將當前數據庫系統時間戳作爲日期時間值返回。

由於當前月份是8月份,因此給出了AUG。

set @a=left(datename(month,getdate()),3)-1 

上述聲明不會使AUG到JUL。

您試圖從varchar類型中減去1。因此錯誤。

相關問題