mysql STR_TO_DATE无法使用

如题

在mysql中 STR_TO_DATE 函数是将字符串转化成时间的函数,这里不过多介绍。

问题

SELECT STR_TO_DATE( oct.date, ‘%Y年%c月’ ) as result FROM oct

在执行这条sql语句时,按照道理应该是会显示出 数据表中存储对应格式的 时间
如图:
mysql STR_TO_DATE无法使用_第1张图片
但是在 实际运行过后
得到结果为
mysql STR_TO_DATE无法使用_第2张图片
对照文档看了看,应该是没有问题,同样在另一台主机的数据库中测试,是可以显示的。
于是博主推测 可能是应为 sql_mode 的问题,应该前几天 博主动过这个 sql_mode
于是将 两个主机上的sql_mode 进行输出

SELECT @@sql_mode;

问题主机:
博主主机
正常主机:
正常主机

好了,到这找到差别就好办了, 查找mysql文档看 sql_mode 参数意义

mysql官方文档 : https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html

果然找到问题
mysql STR_TO_DATE无法使用_第3张图片
所以,最后当然是

set @@sql_mode = ‘STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’

或者在 my.ini 文件中长期更改

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

问题解决

原创文章,转载标注

你可能感兴趣的:(JAVA)