需要上个月在sql中只有3个字母JUL

Red*_*vil 2 sql sql-server sql-server-2008

我想打印JUL,这个查询返回AUG:

declare @a varchar(19)

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

print @a
Run Code Online (Sandbox Code Playgroud)

但是当我把我的代码编写为

declare @a varchar(19)

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

print @a
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

消息245,级别16,状态1,行3
语法错误将nvarchar值'Aug'转换为数据类型int的列.

mar*_*c_s 5

您需要首先从当前日期减去1个月,那么将其转换为"日期名":

DECLARE @a VARCHAR(19)

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

PRINT @a
Run Code Online (Sandbox Code Playgroud)