sql - 返回除当前月份以外的所有数据
问题描述
我希望检索所有数据,但我希望排除当前月份。
我正在使用的 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 月开始......
解决方案
您可以使用方便的日期功能eomonth()
(在 SQL Server 2012 中引入):
where mopefd < dateadd(day, 1, eomonth(getdate(), -1))
eomonth(getdate(), -1)
给你上个月的最后一天。您可以只添加一天,并将其用作搜索的(不包括在内)上限。
旁注:正如 HABO 所评论的,如果mopefd
没有时间部分,则表达式可以简化:
where mopefd <= eomonth(getdate(), -1)
推荐阅读
- python - 遍历存储在列表中的注册表项
- javascript - javascript计算总计结果变成双倍
- position - plotly 中是否有类似于 R 中的 hjust/vjust 或 position_dodge 的功能?
- machine-learning - 二元或分类图像分类?
- javascript - JavaScript:从开始日期和分钟计算结束日期
- django - 如果 form.is_valid() 不调用 clean(self) 方法
- jquery - 在 ASP.NET 中,当 HttpStateCode 为 200 时,ajax GET 响应为空
- schema - “选择”块属性无效
- android - 试图在没有解码器的情况下使虚拟上下文成为当前的
- java - 如何从文件中读取 JSON 并用值替换对象?