使用SQL计算表中两个日期之间的假日数

时间:2012-10-09 15:51:11

标签: sql tsql

我有一个包含两个日期字段的表(下面的示例中为日期1和日期3)。我还有一张假期表,其中列出了所有假期。我想在SQL查询中找到一种方法,以便能够计算两个日期值之间的假日数。有什么想法吗?

示例表

Date 1          Date 2
5/1/2012        5/4/2012
8/31/2012       9/25/2012
12/23/2011      12/27/2011

日期维度表的示例:

Holiday Date

12/25/2011
1/1/2012
7/4/2012
9/3/2012 

理想输出:

Date 1          Date 2           Holidays
5/1/2012        5/4/2012         0
8/31/2012       9/25/2012        1
12/23/2011      1/10/2012        2

2 个答案:

答案 0 :(得分:1)

这样的事情:

SELECT count (holidays.date) AS holiday_count
FROM holidays, table
WHERE holidays.date BETWEEN table.date_1 AND table.date_2

答案 1 :(得分:1)

以下应该这样做:

select date1, date2, t.total
from datestable, (select count(*) as total 
                  from holidaystable 
                  inner join datestable 
                  on holidaydate between date1 and date2) t;