加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在mysql中的两个日期之间搜索

发布时间:2020-12-13 16:08:37 所属栏目:PHP教程 来源:网络整理
导读:我有两张桌子,这个桌子的名字是“rooms” ,另一张是“预订” 我现在加入了两个表,当我在book_form =“2016-12-30”和book_to =“2016-12-31”之间搜索时我想要值,它将返回true,因为这两个日期在“预订”中不存在表,当在book_form =“2016-12-30”和book_to =
我有两张桌子,这个桌子的名字是“rooms”

Table Rooms

,另一张是“预订”

Table Bookings

我现在加入了两个表,当我在book_form =“2016-12-30”和book_to =“2016-12-31”之间搜索时我想要值,它将返回true,因为这两个日期在“预订”中不存在表,当在book_form =“2016-12-30”和book_to =“2017-01-05”或book_form =“2017-01-03”和book_to =“2017-01-15”之间进行搜索时,它将返回false因为这个日期存在于预订表中.

这是我的查询.

select * from rooms join room_book on rooms.room_id = room_book.room_id where status = 'available' and room_book.book_from NOT BETWEEN '2016-12-30' AND room_book.book_to NOT BETWEEN '2016-12-31'

NOTE: Sorry actually the column book_from date is 2017-01-01 in the bookings table.

解决方法

一个简单的SQL查询应该只返回那些没有包含提供日期的预订的房间:

SELECT *
FROM rooms
LEFT JOIN room_book
    ON room_book.room_id = rooms.room_id
    AND 'search_date' BETWEEN room_book.book_from AND room_book.book_to
WHERE rooms.room_id IS NULL
AND rooms.status = 'available'

替换您在上面搜索search_date的日期.

通过使用LEFT JOIN,您将获得房间中的所有记录. where子句中的IS NULL测试消除了在room_book中没有匹配行的那些行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读