【发布时间】:2012-08-02 19:11:18
【问题描述】:
我在 mysql 中有一个包含开始和结束日期的表。这些开始和结束日期适用于预订酒店的时间。我需要做的是显示一个日历,显示已预订的日期和当月可用的日期。我如何知道当月的预订日期?我可以循环浏览当月的每一天,但这意味着 30 或 31 个查询,是否有更好、更优化的方法来找出当月预订的日期,以便我可以在日历上对日期进行颜色编码?
表结构是这样的:
hotelid int(11)
开始日期(日期)
结束日期(日期)
查询请求:
SELECT * FROM hotel_book WHERE hotelid = 1 AND DATE_FORMAT(startdate,'%Y-%m') >= '2012-08' AND DATE_FORMAT(enddate,'%Y-%m') <= '2012-08'
我确定我可以在 2012-08-01 和 2012-08-31 通过,所以我不会在每张支票上处理日期格式。但仅用于示例目的。
【问题讨论】:
-
这在一定程度上取决于数据库中数据的结构。由于您没有展示您的桌子,所以很难说。
-
@hakre 我更新了我原来的帖子。
-
酒店ID指的是不同的酒店对吗?所以大概你会让用户首先选择酒店,然后所有具有相应酒店 ID 的开始和结束日期都会显示在日历中?
-
@Alex 是的,当查询当前月份的表时,我会得到 hotelid。
-
所以第一件事。您能否在问题中添加一个查询,以获取酒店 ID 1 的 2012 年 8 月的所有日期?