A.C*_*sin 3 sql-server t-sql date
我需要帮助选择日期在前 3 个月内的数据。(注意:我不是要求过去 3 个月即DATEADD(MONTH, -3, GETDATE())
)
我不想使用 DATEADD 方法的原因是这个查询可以在月中运行,我不希望它返回到那个点之前的数据
您可以使用此方法来确定 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)
归档时间: |
|
查看次数: |
25130 次 |
最近记录: |