mysql - MySQL检查是否采用日期间隔
问题描述
我有一个数据库表,其中包含很多行,其中包含格式为“YYYY-mm-dd”的 start_date 和 end_date
并且不希望一个被占用的时期被重叠,或围绕一个被占用的时期
Row 1: start_date 2020-07-01 , end date 2020-15-07
Row 2: start_date 2020-06-14 , end date 2020-06-29
如果我使用新的 start_date 2020-06-13 和 end_date 2020-06-30 进行测试,则应返回第 2 行
如果我使用新的 start_date 2020-06-16 、 end_date 2020-06-30 进行测试,则应返回第 2 行。
如果我使用 2020-06-27 和 end_date 2020-07-02 进行测试,则应返回第 1 行和第 2 行
那是怎么做的,我无法理解它。
解决方案
这只是重叠范围问题的一种变体。你可以考虑:
SELECT *
FROM yourTable
WHERE end_date >= new_start AND start_date <= new_end;
例如,要使用您提供的示例数据,您可以尝试:
SELECT *
FROM yourTable
WHERE end_date >= '2020-06-13' AND start_date <= '2020-06-30';
演示
推荐阅读
- flutter - Android Studio 在运行 Flutter 项目时出现问题
- php - 致命错误:未捕获的错误:调用字符串上的成员函数 exec()
- angular - 以角度在表单外调用表单的提交按钮
- elf - 如何执行 PE32 可执行文件?
- r - 如何通过 GitHub Actions 向 CRAN 提交 R 包?
- python - 如何在熊猫上将唯一的偶数列标题称为x轴,而奇数列用作y轴?
- wordpress - 如何隐藏和禁用 Wordpress 管理菜单项
- google-chrome - Google Chrome Web Store 扩展 - 国际化问题
- tensorflow - 如何使用嵌套模型显示 Tensorflow 模型中的所有层?
- google-chrome - Chrome 未显示所有网络通信