可能重复:
How to look which room is available between 2 dateTimes
我有这行数据
|room_id|checkin |checkout |
+ + + +
|1 |2012-05-02 |2012-05-09|
但我不想在两个日期之间选择这一行
我有这个查询
SELECT *
FROM `reservations` `res`
WHERE (2012-05-03
NOT BETWEEN res.expected_checkin_date AND res.expected_checkout_date)
AND COALESCE(2012-05-08
NOT BETWEEN res.expected_checkin_date AND res.expected_checkout_date)
但是,我仍然得到这个不被提出的行。实际上,我的想法是选择不在这两个日期之间的所有行。有什么想法吗?
基本上,有人试图从5/3到5/8预订房间,我希望看到符合该标准的房间列表。
答案 0 :(得分:1)
不知道checkin
和checkout
是什么类型,无论是字符串还是日期/日期时间,问题似乎与日期常量不用单引号分隔的事实有关(即它们本身不应该表示为字符串。)
因此,只需尝试以下操作而不是查询:
SELECT *
FROM `reservations` `res`
WHERE ('2012-05-03'
NOT BETWEEN res.expected_checkin_date AND res.expected_checkout_date)
AND COALESCE('2012-05-08'
NOT BETWEEN res.expected_checkin_date AND res.expected_checkout_date)
答案 1 :(得分:0)
我怀疑你想要:
SELECT *
FROM reservations AS res
WHERE res.expected_checkout_date <= '2012-05-02'
OR '2012-05-09' <= res.expected_checkin_date