两个日期之间的tsql可以为null

Ale*_*der 4 t-sql sql-server select where

我是TSQL的新手.我需要编写一个返回过滤记录的存储过程.因此用户有两个日期要输入.他只能输入一个日期,或两个,或两者,或任何一个.

在存储过程中,我有两个参数@From,@ To - date type.我需要搜索记录.

如果用户没有输入日期 - 我不关心选择查询中的日期.

如果用户输入了2个日期 - 我需要包含它们进行搜索.

如果用户输入@From日期 - 我需要搜索到今天为止.

如果用户输入@To日期 - 我需要搜索小于@To的日期.

谢谢你的帮助.

Mit*_*eat 11

SELECT ColumnList
FROM MyTable
WHERE
    (@FromDate IS NULL OR FromDateColumn >= @FromDate)
    AND (@ToDate IS NULL OR ToDateColumn <= @ToDate )
Run Code Online (Sandbox Code Playgroud)

(但请注意,由于参数嗅探,这可能会受到不合适的缓存查询计划的影响,特别是如果WHERE子句中存在大量参数条件)