如何从日期字段获取下个月的结果

时间:2015-12-10 19:01:43

标签: sql sql-server

我有一张日期表。 我需要获得即将到来的月份的所有结果。

*******示例代码我有,但它返回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个月的数据。

2 个答案:

答案 0 :(得分:0)

您的搜索结果完全您要求的内容。您要求在One Month from TodayTwo 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()))