2010-05-19 157 views
1

如何创建一个接受开始和结束日期的存储过程(例如4月1日至4月三十〇日SQL存储过程:营业时间

1)获取工作日包括星期六X(值)。 +
2.)Get Holidays x(a value)

并返回总数。

我是新手,我想这应该是一个tsql函数。哼。

任何帮助,将不胜感激。

感谢

回答

1

解决这个问题的最简单的方法是创建一个包含你可能要考虑每天值的日历表。然后,您可以添加指示是营业日还是假日的列。就这样,问题就变得简单了:

Select .. 
From Calendar 
Where IsBusinessDay = 1 
    And Calendar.[Date] Between '2010-04-01' And '2010-04-30' 

如果你想天的计数,然后你可以这样做:

Select Sum(Case When IsBusinessDay = 1 Then 1 Else 0 End) As BusinessDayCount 
    , Sum(Case When IsHoliday = 1 Then 1 Else 0 End) As HolidayCount 
From Calendar 
Where Calendar.[Date] Between '2010-04-01' And '2010-04-30' 
+0

+1这与我的想法大致相同。这一定是一个可行的解决方案! =) – 2010-05-19 00:55:26

0

首先,你需要将所有的节假日存储到一个独立的表(圣诞节,复活节,元旦等各自的日期(通常在午夜时分));其次,您将不得不在临时表中生成办公日的日期,然后排除Holidays表中包含的日期。第三,如果您在不同的日子有不同的工作时间,您可以根据当天的情况将办公时间设置为这些日期。

这是你找到合适的代码实现的算法。

让我知道这是否有帮助!