我有一个调用存储过程的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来说还不够新。
答案 0 :(得分:0)
我想我明白了。我不得不将表达式调整为:
DateReceived is between =DateAdd(DateInterval.Day, 0, Today()) AND =DateAdd(DateInterval.Day, 1, Today())
这似乎有效。