3

我对特定功能有一点问题。我有一张房间预订表。

表:预订

room (BIGINT), date (DATE)
            4,  2012-09-25
            4,  2012-09-27
            4,  2012-09-30

我需要获取日期范围内 id = 4 的房间可用的日期。例如,如果我想要房间在 2012 年 9 月 25 日和 2012 年 10 月 1 日(含)之间可用的日期,我必须获得下一个结果:

date (DATE)
 2012-09-26
 2012-09-28
 2012-09-29
 2012-10-01

任何帮助将不胜感激。提前致谢。

4

2 回答 2

1

如果您将日期表添加到数据库中,则可以轻松处理此类查询。用大量日期填充它(并在需要时添加),然后对其进行右外连接以查找缺失的日期。

如果您不能或不想添加其他表,则可以使用以下命令将日期转换为整数字段(表示自 1970 年 1 月 1 日以来的天数):

SELECT room, UNIX_TIMESTAMP(`date`)/86400 FROM reservations

从那里,您可以使用此问题或其他地方的技术来查找该序列中的空白。

于 2012-09-25T16:00:09.267 回答
1

正如@steven-cheng 所说,我不得不使用 mysql 和代码的组合,因为创建临时表太麻烦了。使用代码获取可用日期会更快。

于 2013-05-22T18:29:28.287 回答