我尝试使用报表生成器在SSRS中按今天的日期过滤SQL数据集

时间:2017-10-04 22:14:59

标签: sql sql-server reporting-services ssrs-2008 ssrs-tablix

我有一个调用存储过程的SSRS报告。这是程序:

USE [TSC-Telaid]
GO
/****** Object:  StoredProcedure [dbo].[TW_spRPTAllReceiverInventory]    Script Date: 10/4/2017 2:06:58 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



ALTER PROCEDURE [dbo].[TW_spRPTAllReceiverInventory] 
@SiteId varchar(50), 
@ReceiverId int
AS

BEGIN

DECLARE @SQL varchar(8000), @Index int, @Value varchar(500), @Source varchar(100)

SELECT @Index = CHARINDEX('Initial Catalog=', ConnectionString) + 16, @Value = ConnectionString
FROM CustomerSetting
WHERE SiteId = @SiteId

SET @Source = '[' + SUBSTRING(@Value , @Index, CHARINDEX(';', @Value, @Index) - @Index) + ']'

SET @SQL = 'SELECT R.SiteId, L.*
        FROM ' + @Source + '.[dbo].[vwReceiver] R JOIN  ' + 
            @Source + '.[dbo].[vwInventory] L ON R.ReceiverId = L.ReceiverId
        WHERE R.ReceiverId = ' + CAST(@ReceiverId as varchar)

EXEC(@SQL)

END

我传入@SiteId&数据集上的@ReceiverID。我收回的其中一个字段是DateReceived。我想过滤数据集,以便它只返回DateReceived = today(),但它不起作用。

我还尝试将过滤器表达式设置为DateReceived BETWEEN DateAdd(" d", - 1,Today())&使用DateAdd(" d",1,今天())

我不是SQL新手,但对SSRS来说还不够新。

1 个答案:

答案 0 :(得分:0)

我想我明白了。我不得不将表达式调整为:

DateReceived is between =DateAdd(DateInterval.Day, 0, Today()) AND =DateAdd(DateInterval.Day, 1, Today())

这似乎有效。