跪求将以下函数翻译为 mysql 的语法
CREATE FUNCTION workdayadd(
@date datetime, --基础日期
@workday int --要增加的工作日数
)RETURNS datetime
AS
BEGIN
DECLARE @bz int
--增加整周的天数
SELECT @bz=CASE WHEN @workday<0 THEN -1 ELSE 1 END
,@date=DATEADD(Week,@workday/5,@date)
,@workday=@workday%5
--增加不是整周的工作天数
WHILE @workday<>0
SELECT @date=DATEADD(Day,@bz,@date),
@workday=CASE WHEN (@@DATEFIRST+DATEPART(Weekday,@date)-1)%7 BETWEEN 1 AND 5
THEN @workday-@bz ELSE @workday END
--避免处理后的日期停留在非工作日上
WHILE (@@DATEFIRST+DATEPART(Weekday,@date)-1)%7 in(0,6)
SET @date=DATEADD(Day,@bz,@date)
RETURN(@date)
END
CREATE FUNCTION workdayadd(
@date datetime, --基础日期
@workday int --要增加的工作日数
)RETURNS datetime
AS
BEGIN
DECLARE @bz int
--增加整周的天数
SELECT @bz=CASE WHEN @workday<0 THEN -1 ELSE 1 END
,@date=DATEADD(Week,@workday/5,@date)
,@workday=@workday%5
--增加不是整周的工作天数
WHILE @workday<>0
SELECT @date=DATEADD(Day,@bz,@date),
@workday=CASE WHEN (@@DATEFIRST+DATEPART(Weekday,@date)-1)%7 BETWEEN 1 AND 5
THEN @workday-@bz ELSE @workday END
--避免处理后的日期停留在非工作日上
WHILE (@@DATEFIRST+DATEPART(Weekday,@date)-1)%7 in(0,6)
SET @date=DATEADD(Day,@bz,@date)
RETURN(@date)
END
返回2009-10-01之后3个工作日的日期,第二个参数也可以用负值,同理得到之前3个工作日的日期剔除周末用的
比如:workdayadd('2010-05-06',3) 返回:2010-05-11
workdayadd('2010-05-06',-3) 返回:2010-05-03
workdayadd('2010-05-06',-8) 返回:2010-04-26
workdayadd('2010-05-06',8) 返回:2010-05-18
CREATE FUNCTION workdayadd(
`DATE` DATETIME,workday INT )
RETURNS DATETIME
BEGIN
DECLARE bz INT;
SET bz=IF(workday<0,-1,1);
SET `DATE`=DATE_ADD(`DATE`,INTERVAL @workday/5 WEEK) ;
SET workday=@workday%5;
WHILE workday<>0 DO
BEGIN
SET `DATE`=DATE_ADD(`DATE`, INTERVAL @bz DAY),
@workday=CASE WHEN (@@DATEFIRST+DATEPART(WEEKDAY,@DATE)-1)%7 BETWEEN 1 AND 5
THEN @workday-@bz ELSE @workday END ;
END;
END WHILE;
WHILE (@@DATEFIRST+WEEKDAY(@DATE)+1)%7 IN(0,6)DO
BEGIN
SET @DATE=DATEADD(DAY,@bz,@DATE)
END;
RETURN(@DATE) ;
END$$
但我运行时会报错
“1064 you have an error in your sql syntax”
本地版本是mysql5.1
求解