mysql select字符串时间格式dateformat后,插入报错,请大神帮忙看看

在使用MySQL的DATE_FORMAT和str_to_date函数处理时间格式时遇到插入错误,通过对比正常查询与插入操作的区别,发现str_to_date函数在特定场景下可能导致问题。本文详细描述了错误现象,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql select字符串时间格式dateformat后,插入报错,请大神帮忙看看

sql1、首先,select正常使用dateformat查询语句如下
SELECT

gbj.`group`,	gbj.mfactoryId,	gbj.model,
DATE_FORMAT(str_to_date(gbj.`month`,'%Y'),'%Y')  `year`,
gwd.total 	meterNum,count(*) breakdownNum 

FROM gdh_breakdown_jc gbj
LEFT JOIN

(
SELECT gw.model,count(*) total from gdh_wmeter gw
GROUP BY gw.model
) gwd

ON gwd.model = gbj.model
WHERE gbj.useYear <=15
GROUP BY
gbj.model,gbj.GROUP,gbj.mfactoryId, DATE_FORMAT(str_to_date(gbj.month,’%Y’),’%Y’)

上述查询语句得到结果如下图
在这里插入图片描述
sql2、当我将sql1中select出的数据,插入到另一张表的时候,就报错了,如下
在这里插入图片描述
注:

  1. select出来的数据与gdh_breakdown_rate_jc字段的数据类型是对应的上的;
  2. 当我将sql2中str_to_date(gbj.month,’%Y’)替换成DATE_FORMAT( NOW(), ‘%Y’ ),再次执行sql2的时候,执行成功,如图在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值