表A(自定义日历表)
[id] [int] NOT NULL ,
[F_ID] [int] NOT NULL ,
[IDType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[WeekEndType] [int] NULL ,--周末假日类型(位)1=周六上午上班 2=周六下午上班4=周日上午上班 8=周日上午上班
[WDayHours] [decimal](18, 1) NULL ,
[WDayADD] [decimal](18, 1) NULL ,
表B(明细表)
[ID] [int] NOT NULL ,
[FY_ID] [int] NOT NULL ,
[DDate] [datetime] NULL ,
[Dtype] [int] NULL ,--假日类型:1=该日期为假日,-1=该日期为工作日(便如黄金周,原来可能是周日的,但公司作了调整为------------上班天)如果是-1,会强制周末为工作日
[DDesc] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL 
问题:
写一个自定义函数计算两个日期差:
本人已经写好了除周六日的(但如果考虑用户自定义假日表的应该如何处理。)
现在已经完成功能(周六算0.5天,周日算1天)
--这个函数只是计算当前日期为周的第几天(没太大的意义)
Create  Function FuncDATE_GetWeekDay(@pDate DateTime )
returns Int 
AS
BEGIN
Declare @RTN Int
Declare @WKD Int
    
Set @WKD=DatePart(W,@pDate)
if(@WKD=1)
Set @RTN=7
else 
Set @RTN=@WKD-1
Return @RTN
END
--算日期差的函数
--@pram2 结束时间
--@pram1 开始时间
--@FID 表AID
FUNCTION [dbo].[Func_GetDaysOfGongRi](@pram1 varchar(15),@pram2 varchar(15),@FID Int)
RETURNS decimal(5, 1) AS
BEGIN
DECLARE @diffdate INT 
DECLARE @sn INT
DECLARE @i INT
DECLARE @ii INT
DECLARE @RTN decimal(18,1) SET @diffdate=DATEDIFF(D,@pram1,@pram2)+1 
SET @sn=[dbo].[Func_GetDateOfweek](@pram1)
SET @i=convert(int,(@diffdate)%7)
SET @ii=convert(int,@diffdate/7) 

IF(@i=0)
BEGIN
   SET @RTN=5.5*@ii
END
ELSE
BEGIN
   SET @pram1=DATEADD(DAY,@ii*7,@pram1)
   SET @RTN=5.5*@ii
   WHILE(DATEDIFF(D,@pram1,@pram2)>=0)
   BEGIN
 IF([dbo].[Func_GetDateOfweek](@pram1)=7)
 BEGIN
    SET @RTN=@RTN
      END
 ELSE IF([dbo].[Func_GetDateOfweek](@pram1)=6)
 BEGIN
     SET @RTN=@RTN+0.5
 END
                 ELSE 
 BEGIN
     SET @RTN=@RTN+1
 END  
 SET @pram1=DATEADD(DAY,1,@pram1)   
           END
END  
RETURN @RTN   
END问:应该如扣除表A,表B 里定义的日期,算出两日期差。谢谢!