sql - 用于检查两个日期之间是否不存在日期的 SQL 查询
问题描述
我使用包含几天计划的数据库。
我请求找出可能的错误。
我想要一个检查日期的查询。如果缺少某天(startDate / endDate),我想知道。
例如,如果我在数据库中的列“Day”包含:
01/01/2019
01/02/2019
01/04/2019
是否可以进行如下所示的查询:
SELECT Day FROM Schedule WHERE Day doesn't exist BETWEEN 01/01/2019 AND 01/04/2019
我希望它在 2019 年 1 月 3 日回到我身边。
解决方案
是的,有可能(使用日历表或临时查询来生成它):
WITH cte AS (
SELECT CAST('20190101' AS DATETIME) t
UNION ALL
SELECT t + 1 AS t
FROM cte
WHERE t < '20190104'
)
SELECT c.*
FROM cte c
LEFT JOIN Schedule s
ON c.t = s.[day]
WHERE s.[day] IS NULL;
推荐阅读
- php - Laravel 分页附加了数组过滤
- c# - 枚举未从 webapi 调用返回
- c# - 如果已定义,如何仅返回继承实例的列表,否则返回基类
- javascript - 使用 jsontocsv npm,如何提供除 json 键之外的不同标头
- sql-server - 无法使用 Logstash conf 文件将数据推送到 Elasticsearch 无法执行操作错误在 Windows Powershell 中显示
- python - TypeError:图像数据的形状无效(3072,)
- php - 需要识别具有 PHP 和 PDO 的管理员
- html - SPAN 中的新线路
- android - 调用方法 BottomNavigationView.setOnNavigationItemSelectedListener 时出现 NullPointerException
- python - 我的 Python if else 语句有什么问题?