我对特定功能有点问题。我有一张房间预订表。
表:预订
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
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
如果向数据库添加日期表,则可以轻松处理此类查询。填写大量日期(并在需要时添加),然后只需对其进行右外连接即可找到缺少的日期。
如果你不能或不想添加额外的表,你可以将日期转换为整数字段(表示自1970年1月1日以来的天数):
SELECT room, UNIX_TIMESTAMP(`date`)/86400 FROM reservations
从那里,您可以使用this question或其他地方的技术来寻找该序列中的空白。
答案 1 :(得分:1)
正如@ steven-cheng所说,我不得不使用mysql和代码的组合,因为创建临时表太乱了。使用代码获取可用日期的速度更快。