我有一张日期表。 我需要获得即将到来的月份的所有结果。
*******示例代码我有,但它返回2个月的数据**********
where worktype = 'mpm' and status = 'active'
and (nextdate >= DATEADD(MONTH,01,GETDATE()))
and (nextdate < DATEADD(MONTH,02,GETDATE()))
一些数据:
2016-01-27 00:00:00.000
2016-01-28 00:00:00.000
2016-02-02 00:00:00.000
2016-02-02 00:00:00.000
它将返回2个月的数据。
答案 0 :(得分:0)
您的搜索结果完全您要求的内容。您要求在One Month from Today
和Two Months from Today
的日期范围内获取任何内容。
您的所有结果都在此范围内。
如果您只对下一个日历月内的数据感兴趣(在撰写本文时January 2016
),这将更适合您:
Where worktype = 'mpm'
And status = 'active'
And nextdate Between
DateAdd(Month, -1, DateAdd(Month, DateDiff(Month, 0, GetDate()) +2, 0))
And DateAdd(Day, -1, DateAdd(Month, DateDiff(Month, 0, GetDate()) +2, 0))
如果您使用的是SQL Server 2012或更高版本,则还可以使用以下命令:
Where worktype = 'mpm'
And status = 'active'
And nextdate Between
DateAdd(Day, 1, EOMonth(Current_Timestamp))
And EOMonth(DateAdd(Day, 1, EOMonth(Current_Timestamp))
答案 1 :(得分:0)
这样的事情可能是:
WHERE DATEPART(MONTH, nextdate) = DATEPART(MONTH,DATEADD(MONTH,1,GETDATE()))