如何在 SQL 查询中定位上个月

How to Target Last Month in SQL Query

我在 SQL 查询中使用此代码

WHERE [Date] >= DATEFROMPARTS(DATEPART(year,GETDATE()),DATEPART(month,GETDATE())-1,DATEPART(day,GETDATE()))
  AND [Date] <= EOMONTH(DATEFROMPARTS(DATEPART(year,GETDATE()),DATEPART(month,GETDATE())-1,DATEPART(day,GETDATE())));

问题是 2020 年 12 月的查询将出现错误

我发布的代码管理返回数据的日期。它查看代码为 运行 的日期,然后选择从上个月到上个月月底的那一天。我需要的是调用此代码之前一个月的第一天到最后一天的日期。

我明天会处理这个问题,看看其他人能想出什么解决方案会很有趣。

试试这个

SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0),
    DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) - 1 

它将为您提供上个月的开始和结束日期

如果要上个月:

where date >= dateadd(month, -1, datefromparts(year(getdate(), month(getdate(), 1))) and
      date < datefromparts(year(getdate(), month(getdate(), 1))

这只是检查它是否在本月的第一天之前,然后从中减去一个月。