我是 TSQL 新手。 我需要编写一个返回过滤记录的存储过程。 因此用户有两个日期要输入。他可以只输入一个日期,或两个日期,或两者都输入,或任意一个。
在存储过程中,我有两个参数@From、@To - 日期类型。 我需要搜索记录。
如果用户没有输入日期 - 我不关心选择查询中的日期。
如果用户输入了 2 个日期 - 我需要包含它们进行搜索。
如果用户输入@From 日期 - 我需要搜索截至今天的内容。
如果用户输入@To 日期 - 我需要搜索小于@To 的日期。
感谢您的帮助。
最佳答案
SELECT ColumnList
FROM MyTable
WHERE
(@FromDate IS NULL OR FromDateColumn >= @FromDate)
AND (@ToDate IS NULL OR ToDateColumn <= @ToDate )
(但请注意,这可能会因参数嗅探而受到不合适的缓存查询计划的影响,特别是在 WHERE
子句中存在大量参数条件的情况下)
关于sql-server - 两个日期之间的sql,可以为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21232652/