Insert语句中使用STR_TO_DATE函数踩坑速记

笔者SQL语句报错,报错信息为:

[Err] 1292 - Truncated incorrect date value: '2023-11-14 10:42:54'

在经过一番百度和排查后找到报错产生的罪魁祸首是STR_TO_DATE函数,但还是一知半解,直到看到mysql - Data truncation: Truncated incorrect date value error - Stack Overflow,笔者再自己试验大概得到规律

STR_TO_DATE函数会根据输入字符串和格式字符串返回Date、Time、DateTime三种类型之一,如果输入字符串不完整,如:STR_TO_DATE('2023','%Y') ,函数会先决定返回的类型,再将空的位置置0,得到的结果如下图

这是能百度到的一些帖子内容,但是,这种情况下并不会有什么影响,能Insert进表,正常情况下也基本不会有这种业务

如果是插入字符串与格式字符串格式不对的情况下,Select语句无影响,Insert会直接报错!而且就是题主碰到的报错信息

并且这种场景相对来说更容易出现,如题主的取年月日

解决:

1.这个报错其实说法不严谨,因为这并不是error,而是warning,因此可以通过在Insert后加ignore来忽略这个警告

2.或者将输入字符串格式改为与格式字符串一致就可以解决这个警告,通过截取函数很容易就能做到这点

速记只会记录遇到的BUG,出现的规律和对应的解决办法,不追究原理,如果有明白的欢迎评论区留言交流


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值