DATEDIFF获得上个月

Sud*_*ha 4 sql sql-server

我希望相对于当前日期获得上个月

SELECT datediff(mm,-1,2-2-2011)

这个查询给出67这是一个错误的值..哪里出错了?

Pur*_*ome 17

您可以使用DATEADD

例如.

SELECT DATEADD(month, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 7

2-2-2011不是一个有效的日期文字 - 你从结果中减去2,然后从结果中减去2011年 - 正确的日期文字是'2-2-2011'#2-2-2011#.您可以使用GETDATE()获取当前日期,而不是依赖文字.

你也不应该使用DATEDIFF它 - 它给你日期之间的差异.

你应该DATEADD用来计算新的日期.

试试这个:

SELECT DATEADD(mm,-1, GETDATE())
Run Code Online (Sandbox Code Playgroud)

这将是一个月前的日期.

如果你只想要月份,你还需要使用DATEPART:

SELECT DATEPART(mm, SELECT DATEADD(mm,-1, GETDATE()))
Run Code Online (Sandbox Code Playgroud)