首页 > 解决方案 > 如何使用 SQL Server 从数据库中获取最近六个月的数据?

问题描述

我已经尝试了许多不同的查询,这里已经给出了,但它也显示了上一年的数据,例如,如果使用这个查询

 Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6, current_timestamp)), 0)

或者

DATEADD(m, -6, current_timestamp)

这些将在过去六个月内产生。就我而言,我想打印过去六个月的数据。但问题是,如果有一个日期相同但年份不同的数据也会导致这些查询,例如(上面的查询返回 '2018-03-27 10:04:52.537' 的结果,如果有'2017-03-27 10:04:52.537' 的数据也将与结果一起出现)。谁能帮我?

这是我的查询

DECLARE @date6MonthAgo DATETIME = DATEADD(m, -6, current_timestamp) 
DECLARE @totalCount INT = (SELECT COUNT(*) 
                           FROM   [PSA].[ProductionOrder] 
                           WHERE  CreatedDate >= @date6MonthAgo) 
DECLARE @openCount INT = (SELECT COUNT(*) 
                          FROM   [PSA].[ProductionOrder] 
                          WHERE  DocumentStatusCode=7 
                          AND    CreatedDate >= @date6MonthAgo ) 

SELECT @date6MonthAgo, @totalCount, @openCount

标签: sql-server

解决方案


尝试这样的事情,在输入正确的 ID 列之后,只是为了自己验证返回的日期

DECLARE @date6MonthAgo DATETIME = DATEADD(m, -6, current_timestamp); 
SELECT  @date6MonthAgo;

SELECT CreatedDate, keycolumnID
FROM   [PSA].[ProductionOrder] 
WHERE  DocumentStatusCode=7 
AND    CreatedDate >= @date6MonthAgo 
ORDER BY CreatedDate;

推荐阅读