我有一张预订表,其中包含以下信息:
BookingID,(唯一,非null)StartDate,(非null)EndDate(非null)
我需要计算一个人居住的夜晚,我可以在EndDate和StartDate之间使用DATEDIFF.但是,如果有人在31个月内整个月居住,我们只收取30.
我不确定如何在SQL中执行此操作.我以为我必须创建一个变量,按月计算并添加到变量,但这似乎很麻烦,需要很长时间,特别是在年底.这需要每天为大约5,000条记录完成.
所以:如果某人在2014年7月25日开始并于2014年2月9日结束,那么晚上的时间是38而不是39.如果有人在2014年2月2日开始并在2014年1月11日结束,那么晚上是30.有人在2014年2月10日开始,到2014年10月31日结束,晚上是29.
我们将计算未来,因此结束日期是否大于报告运行日期并不重要.
有没有人有任何想法如何以最好的方式实现这一目标?