如题
在mysql中 STR_TO_DATE 函数是将字符串转化成时间的函数,这里不过多介绍。
问题
SELECT STR_TO_DATE( oct.date, ‘%Y年%c月’ ) as result FROM oct
在执行这条sql语句时,按照道理应该是会显示出 数据表中存储对应格式的 时间
如图:
但是在 实际运行过后
得到结果为
对照文档看了看,应该是没有问题,同样在另一台主机的数据库中测试,是可以显示的。
于是博主推测 可能是应为 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
果然找到问题
所以,最后当然是
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
问题解决
原创文章,转载标注