SQL存储过程:营业时间

SQL存储过程:营业时间,sql,tsql,stored-procedures,Sql,Tsql,Stored Procedures,如何创建一个接受开始和结束日期的存储过程(例如4月1日至4月30日) 1.)获取工作日,包括周六x(a值)+ 2.)获取假期x(a值) 并返回总数 我是新手,我想这应该是一个tsql函数。嗯 任何帮助都将不胜感激 谢谢 >P>这个问题的最简单的解决方案是创建一个日历表,该表包含一个你可能要考虑的每一天的值。然后,您可以添加列来指示是工作日还是假日。这样,问题就变得微不足道了: Select .. From Calendar Where IsBusinessDay = 1 And Calen

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

1.)获取工作日,包括周六x(a值)+
2.)获取假期x(a值)

并返回总数

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

任何帮助都将不胜感激


谢谢

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

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'

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

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那和我想的差不多。这一定是一个可行的解决方案!=)