无意中碰到一个类似酒店订房查询的问题,那具体问题描述如下,服务员在前台有个查询页面,要输入2个日期进行查询,我现在假设为2008-01-01到2008-03-01,那么到底应该出什么样的数据那?我们先来分析下各种情况下客人订房的日期段:
A1客人定的是2007-12-01到2007-12-22
B1客人定的是2007-12-01到[color=red]2008-01-12[/color]
B2客人定的是2007-12-01到[color=green]2008-04-01[/color]
B3客人定的是[color=red]2008-01-02[/color]到[color=red]2008-01-22[/color]
B4客人定的是[color=red]2008-01-02[/color]到[color=green]2008-04-22[/color]
C客人定的是[color=green]2008-03-02[/color]到[color=green]2008-04-01[/color]
大致也就是这6种定房情况,那么我们一般在其他地方进行日期比较的时候总是拿开始时间跟输入的最小时间比较,结束时间跟输入的最大时间比较进而得到我们的数据,可就上面酒店订房查询如果按老一套比较方式,那得出的只能是B3一种情况,可真正我们要的情况是哪些?B1---B4都是我们希望的结果,那在这个地方我们来仔细观察下不难发现,我们要进行的比较应该是拿客人订房的结束时间跟输入的最小时间比较,客人订房的开始时间跟我们输入的最大时间进行比较,观察上面的数据我们得到如下结果:输入的最小时间要小于等于客人订房的结束时间,输入的最大时间要大于等于客人订房的开始时间~
A1客人定的是2007-12-01到2007-12-22
B1客人定的是2007-12-01到[color=red]2008-01-12[/color]
B2客人定的是2007-12-01到[color=green]2008-04-01[/color]
B3客人定的是[color=red]2008-01-02[/color]到[color=red]2008-01-22[/color]
B4客人定的是[color=red]2008-01-02[/color]到[color=green]2008-04-22[/color]
C客人定的是[color=green]2008-03-02[/color]到[color=green]2008-04-01[/color]
大致也就是这6种定房情况,那么我们一般在其他地方进行日期比较的时候总是拿开始时间跟输入的最小时间比较,结束时间跟输入的最大时间比较进而得到我们的数据,可就上面酒店订房查询如果按老一套比较方式,那得出的只能是B3一种情况,可真正我们要的情况是哪些?B1---B4都是我们希望的结果,那在这个地方我们来仔细观察下不难发现,我们要进行的比较应该是拿客人订房的结束时间跟输入的最小时间比较,客人订房的开始时间跟我们输入的最大时间进行比较,观察上面的数据我们得到如下结果:输入的最小时间要小于等于客人订房的结束时间,输入的最大时间要大于等于客人订房的开始时间~