MySQL select 不在特定日期和时间的id

MySQL select id which is not in specific date and time

我有两个 table 的名字 carsbooking。 我想找到的是可供预订的可用汽车,简单来说就是从 cars 选择汽车详细信息,其 ID 在特定日期和时间不在预订 table 中。

预订 table 有列 pick_date(date),drop_date(date),pick_time(time),drop_time(time),car_id(int),booking_id(int) blah blah

现在我一直在寻找可用的汽车。请指导我如何在 mysql 中进行操作。以下是 Booking Table 的 4 列。

Pick_Date   Drop_Date    Pick_Time        Drop_Time
----------  -----------  -----------      --------------
2015-01-15  2015-01-15   09:00:00.000000  10:00:00.000000

试试这个:

SELECT c.car_id
FROM cars c 
LEFT JOIN ( SELECT car_id 
            FROM bookings 
            WHERE '2015-01-15 11:00:00' BETWEEN CAST(CONCAT(Pick_Date, ' ', Pick_Time) AS DATETIME) AND CAST(CONCAT(Drop_Date, ' ', Drop_Time) AS DATETIME) 
          ) AS A ON c.car_id = A.car_id 
WHERE A.car_id IS NULL

你可以使用 "NOT IN" of MySql.Read 如果仍然需要帮助请评论。

SELECT * FROM cars WHERE cars.id NOT IN (SELECT id FROM booking);

希望此查询对您有所帮助。

您可以使用 left joinnot innot exists 来完成此操作。 left join 看起来像

select c.*
from cars c left join
     bookings b
     on c.car_id = b.car_id and
        @pickdt <= addtime(drop_date, drop_time) and
        @dropdt >= addtime(pick_date, pick_time)
where b.car_id is null;

变量@pickdt@dropdt是您要查找的接送时间。这会检查该期间和预订期间之间是否有任何重叠。它会选择完全没有重叠的汽车。

注意:您应该将日期时间值存储在单个列中,而不是包含日期和时间的两个单独的值。