MySQL Workbench创建日期格式化函数报错:Truncated incorrect Double value:'st'
问题解决:MySQL函数字符串拼接错误修正
错误原因
MySQL里的+是算术加法运算符,不是字符串连接符。你用+拼接字符串(比如'st')和数字(比如DAY(getData))时,MySQL会尝试把字符串转成数值类型,而'st'这类文本无法转换成有效数字,就会触发Truncated incorrect Double value:'st'的错误。
修正后的函数代码
用MySQL的CONCAT()函数来做字符串拼接,这是MySQL中正确的字符串连接方式:
CREATE DEFINER=`root`@`localhost` FUNCTION `getDate`(getData date) RETURNS varchar(40) CHARSET utf8mb4 DETERMINISTIC BEGIN RETURN CONCAT( DAYNAME(getData), ' ', DAY(getData), CASE WHEN DAY(getData) IN (1, 21, 31) THEN 'st' WHEN DAY(getData) IN (2, 22) THEN 'nd' WHEN DAY(getData) IN (3, 23) THEN 'rd' ELSE 'th' END, ' ', MONTHNAME(getData), ' ', YEAR(getData) ); END
说明
CONCAT()可以接收多个参数,按顺序拼接成一个字符串,不需要额外的连接符- 日数和后缀(st/nd/rd/th)直接放在
CONCAT的参数里,自动完成拼接 - 保留了你原有的日期后缀判断逻辑,确保输出格式符合要求:
Monday 1st January 2022
内容的提问来源于stack exchange,提问作者Rain Black
相关产品推荐
相关产品推荐

