2014-05-05 1 views
0

ma structure transaction_tbl comme celui-cicomment vérifier table SQL avec dernière les données de la semaine dans le serveur SQL en utilisant la procédure stockée

transactID int 
TBarcode  varchar(20) 
Locid   int 
PlateNo  varchar(20) 
dtime   datetime 
DelEcode  nvarchar(50) 
Paydate  datetime 
KeyRoomDate datetime 
DelDate  datetime 
Status  int 

j'ai une procédure stockée comme ceci:

ALTER procedure [dbo].[IBSFVRIPodiumG] 
     @locid INTEGER = NULL 
    AS BEGIN 
     SET NOCOUNT ON 

     DECLARE @TodayMinus7Days DATETIME 
    Declare @krrt integer 
    Declare @DT integer 
     SET @TodayMinus7Days = getdate()-7 

     SELECT 
      t.TBarcode, t.PlateNo, t.DelEcode,cast(t.Paydate as Time) [REQ], 
      datediff(MINUTE, t.PayDate, 
       CASE t.Status 
        WHEN 3 THEN GETDATE() 
        WHEN 4 THEN t.KeyRoomDate 
        When 5 THEN t.KeyRoomDate 
        End) as KRRT, 

       datediff(MINUTE,t.PayDate, 
       CASE t.Status 
        WHEN 3 THEN GETDATE() 
        WHEN 4 THEN GETDATE() 
       WHEN 5 THEN t.DelDate 
       END) as DT 

     FROM  
      dbo.Transaction_tbl t 
     WHERE 

     ( 
      ([status] IN (3,4)) 
      OR 

      ([status]=5 and DelDate >=DATEADD(minute,-3,getdate())) 
     ) 
     AND locid = @locid AND dtime >= @TodayMinus7Days 
     ORDER BY 
      paydate 
    end 

En Transaction_tbl j'ai un index sur locid, et le statut .. et je prends seulement les 7 derniers jours de données de ma table .. j'ai plus de 2 enregistrements manquants dans la table de transaction .. dans ma procédure stockée j'ai donné dtime >= @TodayMinus7Days .. dtime est l'insertion datetime de chaque reocrds.je veux confirmer parce que cette vérification va vérifier seulement 7 derniers jours les données de ma table? En fait, je veux vérifier seulement les 7 derniers jours de données de ma table de transactions .. J'ai donc besoin de changer quoi que ce soit dans ma procédure stockée.Je ne veux pas scanner toute ma table ..
si je donne comme AND locid = @locid AND dtime between DATEADD(DAY, -7, GetDate()) and GetDate() va scanner toute la table. .pendant l'exécution de cette procédure stockée que je veux analyser les 7 derniers jours enregistrements de ma table sql, comment je peux le faire :?

Répondre

1

À moins d'avoir mal compris la question que vous pouvez y parvenir en utilisant DATEADD à nouveau:

...AND locid = @locid AND dtime between DATEADD(DAY, -7, GetDate()) and GetDate() 
+0

monsieur dans mon cas qui va vérifier tablée ?? – user3262364

+0

il va vérifier toute la table pour les entrées ayant 'dtime' dans votre plage de dates seulement – Milen

+0

si je donne du code ce que vous avez suggéré qui va vérifier toute la table ou qui prendra sous-ensemble des 7 derniers jours, puis vérifiez ?? – user3262364

Questions connexes