mysql - MYSQL:过滤多个日期和日期范围
问题描述
我有 2 个日期要按 2 个日期过滤。
我的桌子上有这些数据
id date_from date_to name
1 2018-10-11 2018-10-25 LeBron James
2 2018-10-11 2018-10-25 Stephen Curry
3 2018-10-26 2018-11-10 Kevin Durant
我想做的是根据给定的日期范围过滤它。所以如果我有 2 个日期(2018-10-01 到 2018-10-22)。我只会看到 id 1 和 2,如果有(2018-10-12 到 2018-10-31)我会显示所有数据。
我的示例代码使用 start 和 end 作为范围
SELECT * FROM table WHERE (date_from BETWEEN @start AND @end) OR (date_to BETWEEN @start AND @end)
// 这样做的问题是,如果在范围内没有找到任何值,它将显示所有内容。
SELECT * FROM table WHERE (date_from >= @start AND date_from <= @end) AND (date_to >= @start AND date_to <= @end)
// 问题 - 不会出现数据
我该怎么办,我对很多约会感到困惑。
解决方案
我想你想要和重叠。如果是这样:
SELECT t.*
FROM table
WHERE t.date_from <= @end AND
t.date_to >= @start;
如果一个时期在第二个结束之前开始,则两个时期重叠,反之亦然。
推荐阅读
- php - php在页面加载时获取一个值
- c# - Arduino 串行监视器和显示滞后
- php - PDF 中页面 HTML 的标题
- php - 无法从 ubuntu 16 上的 php 脚本发送邮件
- android - 在所有密度的相对布局中定位两个 ImageView
- java - Docker Mysql + Spring Connection 被拒绝
- payment - Payment Application - EMV
- python - 在不改变纵横比的情况下设置分辨率
- xquery - 用于嵌套和连接的 Xquery
- android - Android 源代码编译:未能构建一些目标 (03:03 (mm:ss))