首页 > 解决方案 > 最后到上个月

问题描述

以下代码为我提供了上个月从 1 到 30/31 的数据

 _timestamp >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) and  _timestamp <= DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -0)  

例如,如果今天是18/05/2021它会给我从 1-04-2021 到 30/04/2021 的结果

我可以进行哪些更改来获取数据:1-03-2021to30/03/20211-02-2021to30/02/2021

标签: sqltsqldatetime

解决方案


一些例子:

DECLARE @date DATETIME = '12/2/2011';  

SELECT 
    DATEFROMPARTS(YEAR(@date), MONTH(@date), 1) AS [Start],
    EOMONTH(@date) AS [End];

GO

SELECT 
    DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) -6, 0) AS [Start 6 ago],
    DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) -5, 0)) AS [End 6 ago],
    CAST(DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) AS DATE) AS [Start This],
    CAST(DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) AS DATE) AS [End This],
    DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) +1, 0) AS [Start Next],
    DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 2, 0)) AS [End Next]

推荐阅读