首页 > 解决方案 > 如何使用 MySql 根据时间间隔获取 id

问题描述

我想根据时间间隔获取 cubbersId

这是我的表:表名cubbersavailability

+---------------------------------------+
|cubbersId  |   fromTime    |   toTime   |
+---------------------------------------+
|   1       |   09:30:00    |   18:30:00 |
|   1       |   09:30:00    |   18:30:00 |
|   1       |   09:30:00    |   18:30:00 |
|   1       |   09:30:00    |   12:30:00 |
+----------------------------------------+

在上表中 cubbersIsd 有一些时间。

条件

  1. 如果我选择fromTimeas10:30:00toTimeas12:00:00意味着获取最后 1 列
  2. 如果我选择fromTimeas08:30:00toTimeas16:00:00表示不选择列
  3. 如果我选择fromTimeas10:30:00toTimeas20:00:00表示不选择列
  4. 如果我选择fromTimeas08:30:00toTimeas20:00:00表示不选择列

我试过这个查询,但这不支持:

SELECT 
    c.cubbersId, 
    shopAvailTime.fromTime, 
    shopAvailTime.toTime 
FROM cubbers c 
    LEFT JOIN 
        (SELECT * FROM cubbersavailability ca WHERE CAST('08:30:00' as time) < ca.toTime AND CAST('12:00:00' as time) > ca.fromTime ) as shopAvailTime ON (c.cubbersId = shopAvailTime.cubbersId) 
WHERE c.cubbersId = 1

但它得到了所有的清单 在此处输入图像描述

注意:这个问题已经问过了,但这对我的问题没有帮助;

标签: mysqlnode.jsselectleft-join

解决方案


SELECT x.cubbersId
     , x.fromTime
     , x.toTime 
  FROM cubbersavailability x 
 WHERE '08:30:00' >= x.fromTime
   AND '12:00:00' <= x.toTime
   AND x.cubbersId = 1

推荐阅读