我已經看到了其他編程語言(Python,jQuery等)的這種函數的不同版本,但不適用於SQL。我有一個程序需要計算一個從創建日期起65天的日期,但不能包括週末或節假日。我們已經有了一個功能,只能將日期添加到日期,但不會考慮假期。我們有一個假日表,列出所有假期日期,tblHolidayDates包含標準日期格式的列HolidayDate。sql工作日假期
我該怎麼做?我想也許只是創建一個日曆表,如果有人可以給我一個CREATE TABLE查詢 - 所有它需要的是日期,工作日和假日列。
下面我給出了增加工作日的當前循環函數,但它缺少假期。任何幫助將不勝感激!!
ALTER FUNCTION [dbo].[AddWorkDaysToDate]
(
@fromDate datetime,
@daysToAdd int
)
RETURNS datetime
AS
BEGIN
DECLARE @toDate datetime
DECLARE @daysAdded integer
-- add the days, ignoring weekends (i.e. add working days)
set @daysAdded = 1
set @toDate = @fromDate
while @daysAdded <= @daysToAdd
begin
-- add a day to the to date
set @toDate = DateAdd(day, 1, @toDate)
-- only move on a day if we've hit a week day
if (DatePart(dw, @toDate) != 1) and (DatePart(dw, @toDate) != 7)
begin
set @daysAdded = @daysAdded + 1
end
end
RETURN @toDate
END
我刪除了MySQL標記,因爲該問題使用SQL Server語法。 –
如果您決定創建日曆表,則應放棄假期表。這樣你只有一套數據要維護。你不需要一個星期幾的列,因爲你可以使用datepart()來獲取它。您可能需要稍後添加會計年度/期間/季度字段。 –