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

如何用MySQL将varchar类型时间列加5分钟后更新另一列?

给VARCHAR类型的时间值增加5分钟并更新表列的解决方法

你遇到的#1292 - Truncated incorrect DOUBLE value: '18:42'错误,根源在于maghrib是VARCHAR类型,直接做数值加法时,MySQL会尝试把时间字符串转成DOUBLE类型,转换失败就触发了截断错误。要实现给时间加5分钟的需求,得先把字符串转成时间类型再操作,具体方案如下:

方案1:如果maghrib_jamat是TIME类型

直接将字符串转成时间后添加5分钟,再存入目标列:

UPDATE `prayer_times` 
SET `maghrib_jamat` = ADDTIME(STR_TO_DATE(`maghrib`, '%H:%i'), '00:05:00');
  • STR_TO_DATE(maghrib, '%H:%i'):把18:42格式的字符串转成MySQL的TIME类型
  • ADDTIME(..., '00:05:00'):给转换后的时间添加5分钟(参数格式为HH:MM:SS)

方案2:如果maghrib_jamat是VARCHAR类型

需要把计算后的时间再转回HH:MM格式的字符串:

UPDATE `prayer_times` 
SET `maghrib_jamat` = DATE_FORMAT(ADDTIME(STR_TO_DATE(`maghrib`, '%H:%i'), '00:05:00'), '%H:%i');
  • DATE_FORMAT(..., '%H:%i'):把运算后的时间类型转成HH:MM格式的字符串,适配VARCHAR列的存储格式

额外建议

为了避免后续再出现类型转换问题,建议把存储时间的列改成TIME类型:

-- 修改maghrib列为TIME类型
ALTER TABLE `prayer_times` MODIFY COLUMN `maghrib` TIME;
-- 修改maghrib_jamat列为TIME类型
ALTER TABLE `prayer_times` MODIFY COLUMN `maghrib_jamat` TIME;

修改后,后续更新操作可以直接简化为:

UPDATE `prayer_times` SET `maghrib_jamat` = ADDTIME(`maghrib`, '00:05:00');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:40:24