首页 > 解决方案 > 如果当前月份没有数据,则获取上个月的数据

问题描述

我是 SQL Server 的新手。我有一个查询,它总是返回当月的数据。问题是每个月的第一天,查询必须给我上个月的数据。

因此,如果我在 9 月 3 日运行查询,则查询必须返回 9 月 1 日到 9 月 3 日的数据。但是,如果我在 9 月 1 日运行查询,它必须返回 8 月的所有数据,或者如果我在10 月 1 日,9 月的所有数据,等等。

我正在尝试使用WHEREBETWEEN以及所有这些来解决这个问题。

有任何想法吗?

标签: sqlsql-servertsql

解决方案


你可以试试这个。

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

推荐阅读