tsql entre deux dates qui peuvent être nul

Je suis nouveau dans TSQL. J'ai besoin d'écrire une procédure stockée qui renvoie les loggings filtrés. L'user a donc deux dates à entrer. Il peut entrer seulement une date, ou deux, ou les deux, ou tout.

En proc stocké j'ai deux parameters @From, type @To – date. J'ai besoin de searchr des loggings.

Si l'user n'a pas saisi les dates, je ne me soucie pas des dates dans la requête de sélection.

Si l'user a entré 2 dates – je dois searchr avec eux inclusivement.

Si l'user a entré @From date – j'ai besoin de searchr jusqu'à aujourd'hui inclusivement.

Si l'user a entré @ Date – je dois searchr des dates inférieures à @.

Merci de votre aide.

SELECT ColumnList FROM MyTable WHERE (@FromDate IS NULL OR FromDateColumn >= @FromDate) AND (@ToDate IS NULL OR ToDateColumn <= @ToDate ) 

(Mais sachez que cela peut souffrir des effets d'un plan de requête mis en cache inadapté en raison d'un reniflage de paramètre, surtout s'il y a un grand nombre de conditions de parameters dans la clause WHERE )

 SELECT Columns FROM Table WHERE DateColumn BETWEEN (CASE WHEN @FromDate IS NULL THEN DateColumn ELSE @FromDate END) AND (CASE WHEN @ToDate IS NULL THEN DateColumn ELSE @ToDate END)