首页 > 解决方案 > SQL 获取上个月(1 月也是)

问题描述

您好我正在寻找简单的方法,如何获取上个月的数据。我得到了这个代码,但它在一月份没有用(结果是 12 2021,我需要 12 2020)

select month(dateadd(month,-1,getdate())), year(getdate())

标签: sqlsql-serverdategetdate

解决方案


据推测,您有某种日期列。

在 SQL Server 中,您可以使用以下方式表达此概念datediff()

where datediff(month, datecol, getdate()) = 1

但是,这不是“可分析的”,这意味着它会阻止使用索引。所以,我建议:

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

如果您只是想要上个月的第一天,您可以使用:

dateadd(month, 1, datefromparts(year(getdate()), month(getdate()), 1))

推荐阅读