mysql - 获取 24 小时时间范围内的记录
问题描述
我尝试根据小时和持续时间在我的表格中找到定价。例如,这是我的桌子
+----+-----------------+------------+----------+---------+
| id | subscription_id | start_time | end_time | pricing |
+----+-----------------+------------+----------+---------+
| 1 | 1 | 22:00:00 | 21:59:59 | 1.5 |
| 2 | 2 | 05:30:00 | 16:29:00 | 0.75 |
| 3 | 2 | 16:30:00 | 18:59:59 | 0.50 |
| 4 | 2 | 19:00:00 | 05:29:59 | 1.5 |
+----+-----------------+------------+----------+---------+
现在,我必须找到从 16:00:00 开始并在 20:00:00 结束的订阅 2 我尝试了几件事,但没有成功
SET @startTime := '17:30:00';
SET @endTime := '20:30:00';
SELECT *
FROM subscription_detail_pricing sdp
WHERE (
(start_time < end_time AND TIME(@startTime) BETWEEN start_time AND end_time)
OR
(start_time > end_time AND TIME(@startTime) NOT BETWEEN end_time AND start_time)
OR
(start_time < end_time AND TIME(@endTime) BETWEEN start_time AND end_time)
OR
(start_time > end_time AND TIME(@endTime) NOT BETWEEN end_time AND start_time)
) AND subscription_id = 2;
我没有找到获取与此范围相对应的 3 条记录的查询方法
如果有人可以提供一些提示,我会失去自己-_-
感谢阅读本娃
解决方案
这看起来像一个经典的范围重叠查询..
如果可能的话,您可以省去头疼的问题,将包含的任何范围"00:00:00"
分成两个单独的行,并使您end_time
的 s 独占
+----+-----------------+------------+----------+---------+
| id | subscription_id | start_time | end_time | pricing |
+----+-----------------+------------+----------+---------+
| 1 | 1 | 00:00:00 | 24:00:00 | 1.5 |
| 2 | 2 | 00:00:00 | 05:30:00 | 1.5 |
| 3 | 2 | 05:30:00 | 16:30:00 | 0.75 |
| 4 | 2 | 16:30:00 | 19:00:00 | 0.50 |
| 5 | 2 | 19:00:00 | 24:00:00 | 1.5 |
+----+-----------------+------------+----------+---------+
然后你的查询就变得简单多了
SELECT *
FROM subscription_detail_pricing
WHERE start_time < "20:00:00"
AND end_time > "16:00:00"
请注意,我更喜欢排他比较,<
并且>
,对于此查询,因为您要比较的内容
start_time < "20:00:00"
- 将start_time
(包括)与输入范围的结尾("20:00:00"
不包括)进行比较end_time > "16:00:00"
- 将end_time
(不包括)与输入范围的开始"16:00:00"
(包括)进行比较
只要至少有一个被比较的值是独占的,检查相等性<=
或>=
, 对我来说没有意义
推荐阅读
- c# - 混淆 .net exe 后无法加载文件或程序集“Newtonsoft.Json”
- amazon-web-services - IIS HTTP 错误 503。服务不可用
- c++ - 如果被其他函数包围,为什么较慢的函数运行得更快?
- javascript - 如何使用 javascript 将文件从 URL(不是文件上传)发送到后端?
- rust - 为什么当 Trait 定义只使用 self 时,在 Trait 实现中允许 mut self?
- php - 如何保存与 imagecopymerge() 合并的图像并在 Laravel 上的数据库中多次保存
- javascript - 使用 JavaScript 从一组引导卡中检索某些引导卡信息,但始终从第一张卡中检索信息
- python - 在 Python 中的一组固定时间发送消息
- r - R中的嵌套if_else语句
- c# - 忽略异步方法中的异常