需要MySQL查询才能获取未在表中注册的日期

时间:2012-09-25 15:57:00

标签: mysql

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

表:预订

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

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

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

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

2 个答案:

答案 0 :(得分:1)

如果向数据库添加日期表,则可以轻松处理此类查询。填写大量日期(并在需要时添加),然后只需对其进行右外连接即可找到缺少的日期。

如果你不能或不想添加额外的表,你可以将日期转换为整数字段(表示自1970年1月1日以来的天数):

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

从那里,您可以使用this question或其他地方的技术来寻找该序列中的空白。

答案 1 :(得分:1)

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