A single sql query which can handle both null or valued date range in sql server(一个可以处理 sql server 中的 null 或 valued 日期范围的 sql 查询)
问题描述
使用 SQL Server 2008.我有一个存储过程,它具有开始和结束日期作为日期范围的输入参数.
Using SQL Server 2008. I have a stored proc which has start and end date as input parameters for date range.
正在寻找一个 单一 sql 查询,它在 where 子句中具有开始和结束日期之间的日期,该查询可以处理日期均为空或两者都有值的两种情况.
Looking for a single sql query which has a between start and end date in the where clause which can handle both cases where the dates are either both null or both have values.
我不想使用 IF 语句.
I don't want to use an IF statement.
推荐答案
WITH limits AS
(
SELECT COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
FROM mytable
)
SELECT m.*
FROM limits
JOIN mytable m
ON mydate BETWEEN startDate AND endDate
如果在 mydate
上有索引,这将是最有效的,因为这个条件是 sargable 并且将使用 Index Seek
.
This will be most efficient if there is an index on mydate
, since this condition is sargable and will use an Index Seek
.
如果没有索引,则使用其他人提出的IFNULL
结构.
If there is no index, then use IFNULL
constructs proposed by others.
这篇关于一个可以处理 sql server 中的 null 或 valued 日期范围的 sql 查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:一个可以处理 sql server 中的 null 或 valued 日期范围


基础教程推荐
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01