sql - 如果当前月份没有数据,则获取上个月的数据
问题描述
我是 SQL Server 的新手。我有一个查询,它总是返回当月的数据。问题是每个月的第一天,查询必须给我上个月的数据。
因此,如果我在 9 月 3 日运行查询,则查询必须返回 9 月 1 日到 9 月 3 日的数据。但是,如果我在 9 月 1 日运行查询,它必须返回 8 月的所有数据,或者如果我在10 月 1 日,9 月的所有数据,等等。
我正在尝试使用WHERE
,BETWEEN
以及所有这些来解决这个问题。
有任何想法吗?
解决方案
你可以试试这个。
DECLARE @StartDate DATE
DECLARE @EndDate DATE
SET @StartDate = DATEADD(MONTH, CASE WHEN DAY(GETDATE()) = 1 THEN -1 ELSE 0 END , DATEADD(DAY, - (DAY(GETDATE()) - 1), GETDATE()))
SET @EndDate = CASE WHEN DAY(GETDATE()) = 1 THEN DATEADD(MONTH,1, @StartDate) ELSE GETDATE() END
SELECT * FROM TheTable WHERE Date BETWEEN @StartDate AND @EndDate
推荐阅读
- javascript - 使用 vue js 和 axios 下载时 XLSX 文件损坏
- python-3.x - 无法在python3中将列表转换为字典
- java - Android中的动画启动画面,没有制作启动活动
- wix - Wix 工具集尝试从不再映射的 ISO 驱动器加载设置文件
- javascript - 在对象值存在时反应对象值未定义
- windows - Windows 会话问题
- node.js - 使用 id 更改用户的昵称
- javascript - 选择选项总是在 vue.js 中被预选
- dax - Power BI 中的行级安全性 - 不起作用
- c# - 为 wsHttpBinding 分配自定义绑定配置