2009-12-15 5 views
0

Je dois supprimer les enregistrements dans une table si la date actuelle est supérieure à la date de création d'enregistrement + un nombre de jours prédéfini (défini par @numberOfDays). J'utilise l'instruction SQL suivante, mais je ne suis pas sûr que ce soit très efficace. Y a-t-il un meilleur moyen? J'utilise le serveur MS SQL 2008.Comment supprimer des enregistrements base sur une date et offset

DELETE 
FROM deviceManager.Test2 
WHERE DATEADD(day, @numberOfDays, deviceManager.Test2.GeneratedAt_UTC) < SYSDATETIMEOFFSET() 

@numberOfDays est un entier avec une valeur de 10

Répondre

0

Probablement préférable d'ajuster la date actuelle au lieu de tous les enregistrements de la table. Changez la logique pour "enregistrer la date de création est avant datetime - @numberOfDays."

Ceci est plus efficace - un calcul au lieu de plusieurs.

+0

Pouvez-vous me dire comment je transformerais un int en un jour pour que je puisse faire le datetime actuel - nombre de jours? – Retrocoder

+0

Essayez 'Day eswald

0

Semble OK pour moi, je ne peux pas penser à une meilleure façon du haut de ma tête.

Questions connexes