2010-11-18 6 views
0

Je dois sélectionner la date précédente la plus proche d'un paramètre de date. Actuellement, je choisissais le plus proche de chaque côté de la date en utilisant ce code:Obtenir la date précédente la plus proche T-SQL

SELECT TOP 1 equities, fund, e_date 
     FROM tbl_assetmix 
     WHERE fund = @fund_code 
     ORDER BY ABS(DateDiff(dd, e_date, @statementdate)) asc 

Je sais qu'il est très simple, mais quelqu'un peut suggérer comment je serais en mesure de choisir la date la plus proche avant le paramètre @statementdate?

Merci, Tristan

Répondre

3

Sélectionnez seulement les lignes où la date est antérieure à @statementdate:

SELECT TOP 1 equities, fund, e_date 
FROM tbl_assetmix 
WHERE fund = @fund_code 
AND e_date < @statementdate 
ORDER BY ABS(DateDiff(dd, e_date, @statementdate)) asc 

ou remplacer le

AND e_date < @statementdate 

avec

AND e_date <= @statementdate 

si le même jour est autorisé.

+4

Vous n'avez pas besoin d'utiliser DateDiff, vous pouvez commander par date et prendre le plus récent. –