首页 > 解决方案 > 返回除当前月份以外的所有数据

问题描述

我希望检索所有数据,但我希望排除当前月份。

我正在使用的 where 语句是

and MONTH(MOPEFD) <= MONTH(DATEADD(month, - 1, GETDATE()))) 

当我在 2 月运行它时,我只获得 2020 年 1 月、2019 年 1 月、2018 年 1 月、2017 年 1 月的数据。

我希望获取 2020 年 1 月、2019 年 12 月、2018 年 11 月……的数据。

下个月,我希望从 2020 年 2 月、2020 年 1 月开始......

标签: sqlsql-servertsqldate

解决方案


您可以使用方便的日期功能eomonth()(在 SQL Server 2012 中引入):

where mopefd < dateadd(day, 1, eomonth(getdate(), -1))

eomonth(getdate(), -1)给你上个月的最后一天。您可以只添加一天,并将其用作搜索的(不包括在内)上限。

旁注:正如 HABO 所评论的,如果mopefd没有时间部分,则表达式可以简化:

where mopefd <= eomonth(getdate(), -1)

推荐阅读