2014年3月7日 星期五

mssql-earlyWorkingDay

CREATE FUNCTION dbo.earlyWorkngDay
(
    @StartDate DATETIME
    --@noOfDate  int = 3 --@EndDate replaced by @StartDate when DEFAULTed
)
--Define the output data type.
RETURNS DATETIME

AS
--Calculate the RETURN of the function.
BEGIN

DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
declare @Holiday table(holiday datetime)
DECLARE @intFlag INT
DECLARE @T_DATE DATETIME
DECLARE @M_DATE DATETIME
DECLARE @M_COUNT INT
DECLARE @RR INT
SELECT @M_DATE='2014/04/04'
SELECT @T_DATE=@StartDate
SET @path = 'C:\Backup\'
DECLARE db_cursor CURSOR FOR
select actual_date,count from datetable
OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @M_DATE ,@M_COUNT
WHILE @@FETCH_STATUS = 0  
BEGIN  
SELECT @RR=0
WHILE @RR<@M_COUNT
BEGIN
insert into @Holiday (holiday) values (@M_DATE+@RR)
SELECT @RR=@RR+1
END
    FETCH NEXT FROM db_cursor INTO  @M_DATE ,@M_COUNT
END  

SET @intFlag = 1
WHILE (@intFlag <=15)
BEGIN
IF (NOT EXISTS(SELECT * FROM @holiday WHERE holiday = @T_date))
and DATENAME(dw, @T_Date) != 'Saturday'
and DATENAME(dw, @T_Date) != 'Sunday'
BEGIN
break
END
ELSE
BEGIN
set @T_date=@T_date +1
END

SET @intFlag = @intFlag + 1
END

-- select * from @Holiday
CLOSE db_cursor  
DEALLOCATE db_cursor
   RETURN (
@T_date
    )
end
go

沒有留言:

張貼留言