小编Jul*_*nda的帖子

Sql Server 2008计算两个日期之间的夜晚,但删除31晚

我有一张预订表,其中包含以下信息:

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.

我们将计算未来,因此结束日期是否大于报告运行日期并不重要.

有没有人有任何想法如何以最好的方式实现这一目标?

sql sql-server datediff sql-server-2008

6
推荐指数
1
解决办法
760
查看次数

标签 统计

datediff ×1

sql ×1

sql-server ×1

sql-server-2008 ×1