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

朱莉·梅林达

我有一个包含以下信息的预订表:

BookingID,(唯一,不为null)StartDate,(不为null)EndDate(不为null)

我需要计算可以在某人居住的夜晚数,可以使用EndDate和StartDate之间的DATEDIFF进行计算。但是,如果某人在31天的一个月中居住了整个月,我们只会向他们收费30。

我不确定如何在SQL中执行此操作。我当时想我必须创建一个变量,按月计算并添加到变量中,但这似乎很麻烦并且需要很长时间,尤其是在年底之前。每天大约需要进行5,000条记录。

因此:如果某人开始于7/25/14并结束9/2/14,则夜晚为38而非39。如果某人开始于10/2/14并结束于11/1/14,则夜晚为30。某人开始于10/2/14,结束于10/31/14,夜晚为29。

我们将对未来进行计算,因此结束日期是否大于报表的发布日期都没有关系。

有谁知道如何以最佳方式实现这一目标?

埃里克

我首先要创建一个查找表,其中包含31天的所有月份

DECLARE @month TABLE (start_date date,end_date date)

    INSERT INTO @month VALUES ('2014-07-01','2014-07-31'),('2014-08-01','2014-08-31'),('2014-10-01','2014-10-31'),('2014-12-01','2014-12-31') 
//populate all months in your calculate range

然后您可以使用

DECLARE @start DATE = '2014-07-25', @end DATE = '2014-09-02'

SELECT DATEDIFF(day,@start,@end) - 
    (SELECT COUNT(*) FROM @month WHERE start_date >= @start AND end_date <= @end)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算两个日期之间的SUM SQL SERVER

来自分类Dev

查找两个日期之间的中位数SQL Server 2008

来自分类Dev

如何在SQL Server 2008中的两个给定日期之间求和

来自分类Dev

计算SQL Server汇总中两个日期之间的星期数

来自分类Dev

计算SQL Server汇总中两个日期之间的星期数

来自分类Dev

如何计算没有。SQL Server 中两个日期时间列之间的天数

来自分类Dev

在SQL Server中的两个日期条件之间

来自分类Dev

SQL Server中两个日期之间的月份差异

来自分类Dev

从SQL Server获取两个日期之间的数据

来自分类Dev

SQL Server查找两个日期之间的记录

来自分类Dev

在SQL Server中的两个日期条件之间

来自分类Dev

SQL Server:查找两个日期之间的记录

来自分类Dev

SQL Server中两个日期之间的天数

来自分类Dev

在SQL Server 2008中查找具有相同ID且开始日期和结束日期不同的员工每月两个日期之间的天差

来自分类Dev

两个日期之间的SQL Server总和数据按日期分组

来自分类Dev

获取SQL Server中两个日期之间的所有日期

来自分类Dev

获取 SQL Server 中不包括星期五的两个日期之间的日期差异

来自分类Dev

SQL Server - 检查 where 子句中两个日期之间的日期字段

来自分类Dev

同步两个SQL Server 2008数据库

来自分类Dev

同步两个SQL Server 2008数据库

来自分类Dev

检查两个月之间的日期SQL Server

来自分类Dev

检查两个月之间的日期SQL Server

来自分类Dev

SQL Server 日期计算

来自分类Dev

如何减去两个日期列并计算SQL Server中的持续时间

来自分类Dev

在sql server中计算两个地理位置之间的距离

来自分类Dev

如何在SQL Server中的两个日期之间获得秒数?

来自分类Dev

从SQL Server中的多个表获取两个日期之间的记录

来自分类Dev

如何获取SQL Server中两个日期之间的月份和年份的列表

来自分类Dev

SQL Server 查询以获取两个日期之间的工作日数,不包括假期

Related 相关文章

  1. 1

    计算两个日期之间的SUM SQL SERVER

  2. 2

    查找两个日期之间的中位数SQL Server 2008

  3. 3

    如何在SQL Server 2008中的两个给定日期之间求和

  4. 4

    计算SQL Server汇总中两个日期之间的星期数

  5. 5

    计算SQL Server汇总中两个日期之间的星期数

  6. 6

    如何计算没有。SQL Server 中两个日期时间列之间的天数

  7. 7

    在SQL Server中的两个日期条件之间

  8. 8

    SQL Server中两个日期之间的月份差异

  9. 9

    从SQL Server获取两个日期之间的数据

  10. 10

    SQL Server查找两个日期之间的记录

  11. 11

    在SQL Server中的两个日期条件之间

  12. 12

    SQL Server:查找两个日期之间的记录

  13. 13

    SQL Server中两个日期之间的天数

  14. 14

    在SQL Server 2008中查找具有相同ID且开始日期和结束日期不同的员工每月两个日期之间的天差

  15. 15

    两个日期之间的SQL Server总和数据按日期分组

  16. 16

    获取SQL Server中两个日期之间的所有日期

  17. 17

    获取 SQL Server 中不包括星期五的两个日期之间的日期差异

  18. 18

    SQL Server - 检查 where 子句中两个日期之间的日期字段

  19. 19

    同步两个SQL Server 2008数据库

  20. 20

    同步两个SQL Server 2008数据库

  21. 21

    检查两个月之间的日期SQL Server

  22. 22

    检查两个月之间的日期SQL Server

  23. 23

    SQL Server 日期计算

  24. 24

    如何减去两个日期列并计算SQL Server中的持续时间

  25. 25

    在sql server中计算两个地理位置之间的距离

  26. 26

    如何在SQL Server中的两个日期之间获得秒数?

  27. 27

    从SQL Server中的多个表获取两个日期之间的记录

  28. 28

    如何获取SQL Server中两个日期之间的月份和年份的列表

  29. 29

    SQL Server 查询以获取两个日期之间的工作日数,不包括假期

热门标签

归档