MySQL将年、月、日字段合并为同表日期字段的语法问题
解决MySQL中合并年月日字段到date字段的语法问题
嘿,你碰到的语法错误根源很明确——MySQL不支持UPDATE ... FROM这种写法,这是SQL Server这类数据库的语法规则,MySQL里直接操作目标表就可以啦。
正确的UPDATE语句写法
直接去掉多余的FROM setlists部分,就能正常执行:
UPDATE setlists SET date = STR_TO_DATE(CONCAT(year, '-', month, '-', day), '%Y-%m-%d');
优化建议:补全月日的前导零
如果你的month或day字段是个位数(比如5月存成5而非05),虽然STR_TO_DATE也能识别%Y-%m-%d格式,但为了更严谨,你可以用LPAD函数补全前导零,确保转换后的日期完全符合标准格式:
UPDATE setlists SET date = STR_TO_DATE( CONCAT(year, '-', LPAD(month, 2, '0'), '-', LPAD(day, 2, '0')), '%Y-%m-%d' );
执行前先验证转换结果
为了避免更新出错,建议先执行SELECT语句确认转换后的日期是否正确:
SELECT year, month, day, STR_TO_DATE(CONCAT(year, '-', month, '-', day), '%Y-%m-%d') AS converted_date FROM setlists;
内容的提问来源于stack exchange,提问作者Brent Vaalburg
相关产品推荐
相关产品推荐

