使用TIME数据类型的存储函数无法运行,需实现AM/PM时间判断
修复TIME类型判断AM/PM的MySQL存储函数
你的存储函数无法正常工作是因为存在语法错误和结构不完整,具体问题和修复方案如下:
存在的问题
- 声明变量的语句末尾缺少分号:
DECLARE am_or_pm varchar(20)未以;结尾 - IF条件判断结构不完整:没有
END IF;来闭合逻辑块 - 函数定义未收尾:缺少
END //来结束函数体,也未重置语句分隔符
修正后的完整代码
DELIMITER // CREATE FUNCTION am_or_pm (crying_time TIME) RETURNS varchar(20) DETERMINISTIC BEGIN DECLARE am_or_pm varchar(20); -- 补充分号 IF crying_time <= '11:59:00' THEN SET am_or_pm = 'AM'; ELSEIF crying_time >= '12:00:00' THEN SET am_or_pm = 'PM'; END IF; -- 闭合IF逻辑 END // -- 结束函数体 DELIMITER ; -- 重置分隔符为默认值
额外说明
- TIME类型的值可以直接和时间格式的字符串(如'11:59:00')比较,MySQL会自动进行隐式类型转换
- 如果需要更严谨的写法,可以把字符串转为TIME类型,比如
crying_time <= TIME('11:59:00'),效果一致
内容的提问来源于stack exchange,提问作者ADN
相关产品推荐
相关产品推荐

