选择前 3 个月的数据

A.C*_*sin 3 sql-server t-sql date

我需要帮助选择日期在前 3 个月内的数据。(注意:我不是要求过去 3 个月即DATEADD(MONTH, -3, GETDATE())

我不想使用 DATEADD 方法的原因是这个查询可以在月中运行,我不希望它返回到那个点之前的数据

scs*_*mon 5

您可以使用此方法来确定 3 个月前的第一天和上个月的最后一天:

select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-3, 0)   --First day of 3 months ago
select DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1) --Last Day of previous month
Run Code Online (Sandbox Code Playgroud)

然后,只需在您的where条款上使用它。

declare @start date = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-3, 0)
declare @end date = DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)

select *
from table
where dateField between @start and @end
Run Code Online (Sandbox Code Playgroud)

如果您dateField是,datetime那么您需要添加秒数,或者只添加一天并使用<操作数,这样您就不会错过最后一天

declare @start date = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-3, 0)
declare @end date = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)        --First day of current month

select *
from table
where dateField >=@start and dateField < @end
Run Code Online (Sandbox Code Playgroud)