首页 > 解决方案 > SSRS 未显示日期范围内的所有数据

问题描述

您好,我正在使用 SQL 创建一个报告,显示日期范围之间的 tranx 信息。但我有一个有趣的问题,我将用下表说明

地位 日期
AB 开始 2021 年 8 月 1 日
AB 质量检查 2021 年 8 月 2 日
AB 2021 年 8 月 2 日
AB 开始 2021 年 8 月 3 日
AB 休息 2021 年 8 月 5 日
AB 没有数据 2021 年 8 月 7 日
AB 开始 2021 年 8 月 7 日
AB 结尾 2021 年 8 月 10 日

我有一个类似的代码:

Select Press, Status, Date
from Table
where Date >= @Date and Date <= @Date

在我的 Sql 开发人员环境中,当我输入 Date >= '08/01/2021' 和 Date <= '08/05/2021' 时,我会得到这个:

地位 日期
AB 开始 2021 年 8 月 1 日
AB 质量检查 2021 年 8 月 2 日
AB 2021 年 8 月 2 日
AB 开始 2021 年 8 月 3 日
AB 休息 2021 年 8 月 5 日

但在我的报告和 SSRS 中,我会得到:

地位 日期
AB 开始 2021 年 8 月 1 日
AB 质量检查 2021 年 8 月 2 日
AB 2021 年 8 月 2 日
AB 开始 2021 年 8 月 3 日

正如您所注意到的,在 SSRS 中没有填充08/05/2021值,但在 SSRS 中,如果我将增加 >= 更改为一天"08/06/2021",我将看到显示08/05/2021值的结果。我在 SSRS 中做错了什么吗?

标签: sqlssrs-2008

解决方案


Date与您传入的变量相比,您的列的数据类型是什么?它们实际上都是数据类型date,还是您正在转换/转换一个?以下代码在 SSMS 和 SSRS 中都按预期执行(尽管我不在 2008 年)。

DECLARE @t1 TABLE (Press VARCHAR(10) NOT NULL, Status VARCHAR(20) NOT NULL, SDate DATE NOT NULL)
INSERT INTO @t1
VALUES
('AB',  'Start' ,'08/01/2021'),
('AB',  'QA Check', '08/02/2021'),
('AB',  'Down'  ,'08/02/2021'),
('AB',  'Start' ,'08/03/2021'),
('AB',  'Break' ,'08/05/2021'),
('AB',  'No Data',  '08/07/2021'),
('AB',  'Start',    '08/07/2021'),
('AB',  'End'   ,'08/10/2021')

Select Press, Status, SDate
from @t1
where SDate >='08/01/2021' and SDate <= '08/05/2021'

并且以下内容丢失了 08/05/2021 行,因为未指定时间是 12:00:00 AM:

DECLARE @t1 TABLE (Press VARCHAR(10) NOT NULL, Status VARCHAR(20) NOT NULL, SDate DATETIME NOT NULL)
INSERT INTO @t1
VALUES
('AB',  'Start' ,'08/01/2021 5:00:00 AM'),
('AB',  'QA Check', '08/02/2021 5:00:00 AM'),
('AB',  'Down'  ,'08/02/2021 5:00:00 AM'),
('AB',  'Start' ,'08/03/2021 5:00:00 AM'),
('AB',  'Break' ,'08/05/2021 5:00:00 AM'),
('AB',  'No Data',  '08/07/2021 5:00:00 AM'),
('AB',  'Start',    '08/07/2021 5:00:00 AM'),
('AB',  'End'   ,'08/10/2021 5:00:00 AM')

Select Press, Status, SDate
from @t1
where SDate >='08/01/2021' and SDate <= '08/05/2021'

推荐阅读