You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.6.10创建WORKDAYS存储函数时遭遇语法错误求助

解决MySQL WORKDAYS函数的语法错误

看起来你的问题大概率是代码里的HTML转义字符导致的——你写的>是HTML里的大于号转义,但MySQL不认识这个,得换成实际的>符号。另外,给代码添加合理换行和缩进,也能避免解析时的混淆,让逻辑更清晰。

修正后的完整代码如下:

DELIMITER $$

DROP FUNCTION IF EXISTS `WORKDAYS` $$

CREATE FUNCTION `WORKDAYS` (start_date DATETIME, end_date DATETIME) 
RETURNS INT 
LANGUAGE SQL 
DETERMINISTIC
BEGIN
    DECLARE days INT;
    SET days = 0;
    
    REPEAT
        SET days = days + (
            CASE WHEN DAYNAME(start_date) IN ('Friday', 'Saturday', 'Sunday') 
                 THEN 0 
                 ELSE 1 
            END
        );
        SET start_date = DATE_ADD(start_date, INTERVAL 1 DAY);
    UNTIL start_date > end_date 
    END REPEAT;
    
    RETURN days;
END $$

DELIMITER ;

几个关键说明:

  • 替换了>为实际的>运算符,这是触发语法错误的核心原因。
  • 调整了代码的换行与缩进,让函数结构更直观,也能避免MySQL解析时出现歧义。
  • 额外提一句:如果你的需求是计算周一到周五的标准工作日,那CASE判断里应该去掉'Friday'——目前你的逻辑是把周五也归为非工作日的,这点可以根据实际需求调整。

内容的提问来源于stack exchange,提问作者Vasu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:06:38