【发布时间】:2015-12-03 18:24:22
【问题描述】:
我必须实施一个解决方案,其中两个日期范围可以相互重叠。在重叠的日期内,我必须计算彼此重叠的天数。一旦我知道了重叠的天数,我就可以根据每天附加的价格计算出一个总数字。
一个场景是这样的
客户正在预订酒店
客户预订日期 - 2011 年 2 月 17 日至 2011 年 2 月 26 日
正常价格(全年) - 01/01/2011 - 31/12/2011(每天价格:$30.00)
特别优惠 1 日期 - 01/01/2011 至 19/02/2011(每日价格:$20.00)
特别优惠 2 个日期 - 2011 年 2 月 17 日至 2011 年 2 月 24 日(每天价格:10.00 美元)
在上述场景中,建议的算法应该计算出日期范围重叠的最便宜的报价,并计算出预订的价格。如果没有特别优惠,则使用正常价格。
因此,在前两天,系统应该从“特价 1”中获取价格,因为它是最便宜的可用价格。接下来的 5 天应该是“特价 2 价格”,接下来的 2 天应该是正常价格。
我很高兴看到 SQL(使用 MS-SQL Server)或代码库答案以获得不同的视图。
我希望问题很清楚,并期待看到答案。
在此先感谢
【问题讨论】:
-
请告诉我们您使用的是什么 rdbms。 SQLServer?
-
你有code或sql了吗?
-
@Matt-如上所述,我已经制定了获取每个“假日财产”现有优惠的代码,它正在计算我正在努力解决的日期范围和优惠的不同变体的总数. :-)
-
在我看来,特价 2 期间完全包含在客户预订期间,因此我无法将您的预期结果与实际数据相吻合。另外,请确认您认为从 2011 年 2 月 17 日到 2011 年 2 月 24 日期间涵盖的天数:6、7 或 8 天?
-
@onedaywhen - 抱歉我的错误,我纯粹编造这些日期来解释解决方案。我会说,如果您将“特别优惠 2 期间”从 2011 年 2 月 14 日更改为 2011 年 2 月 19 日。这将有助于更清楚地了解重叠 bti。
标签: asp.net sql asp-classic vbscript