返回最近6个月的记录

时间:2012-09-10 07:21:48

标签: sql sql-server tsql

以下是我的SQL语句

DECLARE @dStart datetime ,
    @dEnd  datetime

SET @dEnd = GETDATE()
SET @dStart = DATEADD(mm, -6, @dEnd)

Select * from MyTable
Where TheDate Between @dStart AND @dEnd

这将返回今天的所有记录减去6个月的数据。

但我希望这个月数据加上前5个月的数据。

目前它也将从三月返回记录。

3 个答案:

答案 0 :(得分:5)

而不是

DATEADD(mm, -6, @dEnd)

您可以使用

dateadd(month, datediff(month, 0, @dEnd) - 5, 0)

这会将日期截断到当月的第一个月,并从中扣除五个月。

答案 1 :(得分:0)

declare @date datetime
declare @months int
declare @year int
set @months=month(GETDATE())
set @year=month(GETDATE())
set @date=getdate()
(Select * from MyTable Where TheDate Between (01/@months-5/@year) AND (01/@months/@year) ) union (Select * from MyTable Where TheDate Between (01/@months/@year) AND @date)

答案 2 :(得分:0)

DECLARE @dStart datetime ,
    @dEnd  datetime

SET @dEnd = GETDATE()
SET @dStart = DATEADD(mm, -4, @dEnd)