SQL存储过程:营业时间

时间:2010-05-19 00:28:46

标签: sql tsql stored-procedures

如何创建接受开始日期和结束日期的存储过程(例如4月1日 - 4月30日

1。)获取包含星期六x(值)的工作日。 +
2.)获得假期x(值)

并返回总数。

我是新手,我想这将是一个tsql函数。 HMM。

任何帮助将不胜感激。

由于

3 个答案:

答案 0 :(得分:1)

此问题的最简单解决方案是创建一个Calendar表,其中包含您可能想要考虑的每一天的值。然后,您可以添加指示是工作日还是假日的列。有了这个,问题就变得微不足道了:

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'

答案 1 :(得分:0)

答案 2 :(得分:0)

首先,您需要将所有假期存储在一个独立的表格中(圣诞节,复活节,新年日等,以及各自的日期(通常在午夜时间));

其次,您必须在临时表中生成办公室日期的日期,然后排除假期表中包含的日期。

第三,如果您在不同的一天有不同的工作时间,您可以将办公时间设置为这些日期,具体取决于当天的工作时间。

这是您找到适当代码实现的算法。

请告诉我这是否有帮助!