jon*_*bbs 4 sql t-sql sql-server datetime
我的SQL Server数据库中有一个名为" items " 的表,其中有一个名为" dateFinished " 的列.
我有一个脚本将在每个月的第一天运行,需要选择上个月完成的所有项目.
因此,例如,在2月1日,它将需要选择dateFinished在1月1日大于或等于00:00且在2月1日小于00:00的所有项目.
它还需要跨越新的一年(例如DEC - JAN).
有任何想法吗?
Select *
from items
where datefinished >= dateadd(m, datediff(m, 0, GETDATE()) - 1, 0)
AND datefinished < dateadd(m, datediff(m, 0, GETDATE()), 0)
Run Code Online (Sandbox Code Playgroud)
你可以获得上个月的一天dateadd(m,-1,getdate()).然后,在where子句中过滤该日期的年份和月份,如:
select *
from items
where datepart(yy,dateFinished) = datepart(yy,dateadd(m,-1,getdate()))
and datepart(m,dateFinished) = datepart(m,dateadd(m,-1,getdate()))
Run Code Online (Sandbox Code Playgroud)
这应该可以使用多年,如果查询是在比该月的第一天晚些时候运行的话.