【发布时间】:2012-04-26 08:30:29
【问题描述】:
我在使用我必须构建的预订系统 (PHP/Mysql) 验证日期时遇到问题。 我之前发布了一个类似的问题Reservation system dates 但有些事情发生了变化。
我遇到的问题; 我们在办公室设有工作室/会议室。这是在有限的时间范围内出租。用户可以选择租用房间的日期、时间和小时数。
预约步骤:
1- 用户选择他想要租用工作室的月份。 2-用户选择他想要租用工作室的日期。 (我在这里卡住了) 3- 用户选择他希望获得密钥的时间。
收到密钥的时间:
00:00:00 - 06:00:00
06:00:00 - 12:00:00
12:00:00 - 18:00:00
18:00:00 - 24:00:00
这些时间是用户将收到门钥匙的时间。
4- 用户选择他希望租用工作室的小时数。
问题: 我可以查看工作室租用的日期,但不知道具体的时间。 我知道如何在 PHP 中检查时间。但是例如;
用户 1 于 2012 年 4 月 27 日 12:00:00 至 18 小时后租用工作室。 用户 2 想在 2012 年 4 月 26 日 18:00:00 到 12 小时后租用工作室。 用户 3 想在 4 月 28 日租用工作室。
我如何才能检查用户 2 是否可以在最多 4 月 27 日 12:00:00 之前租用工作室。 以及如何检查用户 3 是否可以在 28 日租用工作室并确保它在 06:00 之后可用。
数据库:
id int(11)
user_id int(11)
rental_name varchar(255)
key_receive_time varchar(255)
start_date int(11)
end_date int(11)
total_hours int(11)
我已经连续 2 天这样做了,但仍然无法破解它。我想解决方案很简单,但我可能会朝错误的方向搜索。
提前致谢。
编辑示例查询:
SELECT * FROM reservations
WHERE (start_date >= " . $start_block_1 . " AND end_date <= " . $end_block_1 . ")
OR (start_date >= " . $end_block_1 . " AND end_date <= " . $start_block_1 . ")
$start_block_1 和 $end_block_1 代表一天中 00:00:00 - 06:00:00 个区块的时间戳。
我执行此查询 4 次,因为一天中有 4 个区块可供用户领取钥匙。
【问题讨论】:
-
您的查询看起来如何,哪里出错了?
-
查询示例:
SELECT * FROM reservations WHERE ( start_date >= " . $start_block_1 . " AND end_date <= " . $end_block_1. ") OR (start_date >= " . $end_block_1. " AND end_date <= " . $start_block_1. ")$start_block_1 和 $end_block_1 代表一天中的 00:00:00 - 06:00:00 个区块 -
您是否在
start_date和end_date列中存储日期+时间?那么这是一个简单的查询。 -
它存储为时间戳是
标签: php mysql datetime timestamp