2017-10-04 10 views
0

J'ai un rapport SSRS qui appelle une procédure stockée. Voici la procédure:J'essaie de filtrer un ensemble de données SQL par date d'aujourd'hui dans SSRS en utilisant le Générateur de rapports

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 

je passe @SiteId & @ReceiverID sur l'ensemble de données. L'un des champs que je reçois est DateReceived. Je veux filtrer l'ensemble de données pour qu'il ne renvoie que DateReceived = today() mais cela ne fonctionne pas.

J'ai aussi essayé de placer l'expression du filtre à DateReceived ENTRE DateAdd ("d", - 1, Aujourd'hui()) & DateAdd ("d", 1, Aujourd'hui())

Je ne suis pas nouveau sur SQL mais relativement nouveau sur SSRS.

+0

Cette syntaxe n'est pas valide. Supprimez les guillemets autour de l'identificateur de partie de date (''' d''') et remplacez 'today()' par 'getdate()'. Sinon, vous pouvez faire quelque chose comme '... où DateReceived> = cast (getdate() comme date)'. Cela vous obtiendra tout à partir de la date actuelle à minuit et après. – Xedni

+0

@Xedri l'OP utilise les fonctions SSRS, donc 'today' est valide. @drew jackson. Votre colonne 'DateReceived' renvoie-t-elle une date ou une heure? –

+0

Il retourne un datetime –

Répondre

0

Je pense que je l'ai compris. J'ai dû ajuster l'expression à:

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

Cela semble fonctionner.