尽管 SQL 查询应该排除它,但 SSRS rdl 预览显示具有错误值的日期

SSRS rdl preview shows date with bad value shows up despite SQL query that should exclude it

SSRS rdl 预览显示了错误值的日期,尽管 SQL 应该排除它的查询。

rdl 文件中查询的 xml 是:

  <Query>
    <DataSourceName>ourDataSource</DataSourceName>
    <CommandText>
      use ourDataBase
      ----------------------------------------
      select convert(date, Date1) as ourDate1, count(*) as ourCountForDate
      from ourDataBase.dbo.ourTable
      where
      (
          (Date1 between (getDate()-365) and (getDate()+1) )
      )
      group by convert(date, Date1)
      order by convert(date, Date1)
    </CommandText>
    <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
  </Query>

当直接在 SSMS 中使用 TSQL 时,此查询在 SQL 数据库中工作得很好。

但是,数据库中有一个奇怪年份的杂散值(例如 7654),它显示在 'preview' 的 rdl 文件的结果中,但 NOT 在 SQL-SSMS 中的查询结果。

我尝试了很多变体,大于或等于,等等,但这个杂散值总是出现。

我正在使用 SSRS,Visual Studio 2015,底层 TSQL。 SSRS 使用 2016/01/reportdefinition。项目的 SQL 服务器是 SQL Server 2008 R2、2012 或 2014。

有什么想法吗?

最好在 SQL 服务器中创建一个存储过程,然后让 SSRS 调用它。也能表现得更好。这使数据控制完全在 SQL 服务器中。

对于那些不想使用存储过程的人(例如,由于必须从不同的数据库区域迁移它们),这对我有用:

删除关联的“.data”文件也有助于 'clean' 和 'rebuild' 项目。

您还可以尝试确保年份以 2 开头(或者某些年份小于 3)。 以下是检查以 2 开头的方法:

( left(Datepart(yyyy, Date1),1) = '2' )