我有一个带有可选日期范围参数的查询,我正试图解决一个案例但是很难。
所以基本上是这样的:
SELECT *
FROM TABLE
WHERE CASE WHEN (@FROM_DATE IS NOT NULL and @TO_DATE IS NOT NULL) THEN
DATE BETWEEN ISNULL(@FROM_DATE,1/1/1900) and ISNULL(@TO_DATE,1/1/2999)
ELSE
DATE = DATE ?
非常感谢帮助!!
答案 0 :(得分:1)
看起来您已经确定1900年和2999年的日期不会合法地出现在数据中,因此您可以使用
SELECT *
FROM TABLE
WHERE (@FROM_DATE IS NULL AND @TO_DATE IS NULL )
OR (DATE BETWEEN ISNULL(@FROM_DATE, '19000101')
AND ISNULL(@TO_DATE, '29990101'))
OPTION (RECOMPILE);