sql-server - 两个日期之间的sql,可以为空

标签 sql-server tsql select where-clause

我是 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/

相关文章:

sql-server - SQL Server : Number of disk blocks used by index or table

sql - 第 1 行第 4 列(年份)的批量加载数据转换错误(类型不匹配或指定代码页的字符无效)

java - 如何选择包含长文本或短文本的列,如果长度 > 100,则剪切文本,如果 < 100,则添加空格以使其精确为 100?

sql - 如何解决SQL Server存储过程中字符串或二进制数据被截断的问题

c# - 比较 SQL 和 C# 中的 DateTime 空值

sql-server - SQL 服务器 : using MERGE statement to update two tables

sql - 使用 t-sql 更新单行

mysql - 基于行的 id 的 where 子句中的条件

mysql - 如何在表格中的任意两个日期之间进行减法?

c# - 违反 PRIMARY KEY 约束