sql - 结束可以为空的日期之间的 SQL
问题描述
我正在处理一个 SQL 语句,我正在查看开始日期和结束日期在范围之间。我遇到的一个问题是它的结尾没有更新并且为空。我正在尝试将当前日期添加到示例中的该字段中
如果我这样做,我应该会看到最后两行,此时我看不到任何行。
(CAST(StartDate AS Date) >= '2019-08-22') AND ((CAST(EndDate AS Date) <= '2019-08-22') or (EndDate IS NULL))
表数据
StartDate EndDate
2017-07-18 14:40:00.000 2017-10-13 16:29:09.723
2017-10-13 16:29:09.723 2017-10-27 10:36:55.990
2017-10-27 10:36:55.990 2017-12-12 15:01:51.600
2017-12-12 15:01:51.600 2018-01-24 15:08:53.637
2018-01-24 15:08:53.637 2018-04-04 10:56:27.110
2018-04-04 10:56:27.110 2018-05-25 14:14:13.863
2018-05-25 14:14:13.863 2018-05-25 14:41:16.033
2018-05-25 14:41:16.033 2018-10-17 15:45:58.517
2018-10-17 15:45:58.517 2018-12-18 11:33:37.663
2018-12-18 11:33:37.663 2019-02-11 11:22:52.053
2019-02-11 11:22:52.053 2019-08-21 10:40:17.937
2019-08-21 10:40:17.937 2019-08-21 10:40:25.343
2019-08-21 10:40:25.343 NULL
解决方案
如果您确实想使用 BETWEEN,请尝试在 CAST 中执行 ISNULL 或 COALESCE。
假设 EndDate 是一个日期时间字段。
AND '2019-08-22' BETWEEN CAST(Version.StartDate AS DATE) AND CAST(COALESCE(Version.EndDate, GETDATE()) AS DATE)
推荐阅读
- json - JSON,django,d3错误加载数组
- python - 为什么我不能运行我的中值程序,我真的不明白
- react-native - React native flexbox:将增长因子设置为通用表示组件
- ms-access - Access 2013 - 在两个字段中搜索文本框
- typescript - 如何在对象方法上使用 TypeScript 接口重载
- c# - 发生错误。", ExceptionMessage: "提供了无效的 'HttpContent' 实例
- python - 在 R Script 中运行 Python 脚本会出错
- r - 难以安装 TensorFlow 和运行 MNIST 示例
- ffmpeg - 当持续时间等于“AV_NOPTS_VALUE”时,FFmpeg 获取视频长度
- mysql - MySQL 查询后的重复行