str_to_date在另一个数据库上正常工作时不能在一个数据库上工作

时间:2018-04-29 12:37:58

标签: mysql

我在服务器(v5.5.58)上有一个实时数据库,在我的计算机上有一个本地数据库(v8.0.11),用作测试数据库。

SELECT STR_TO_DATE("12:21:21", "%H:%i:%s")

在服务器上运行此查询可正常工作,而同一查询在本地将日期返回为null并发出警告:

  

警告:#1411日期时间值不正确:' 12:21:21'对于函数str_to_date

我知道STR_TO_DATE适用于MySql版本3.23,所以它适用于版本8,对吗?

1 个答案:

答案 0 :(得分:0)

@@SQL_MODE设置因服务器而异。从5.6开始,MySQL Server对@@SQL_MODE使用了更严格的默认值。

  

如果启用了NO_ZERO_DATENO_ZERO_IN_DATE SQL模式,则不允许零日期或部分日期。在这种情况下,STR_TO_DATE()会返回NULL并生成警告

     

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date

此相关信息显示在以前版本的文档中。

您可以经常更改较新的服务器来模拟旧服务器的(通常是允许的,有时是错误的)行为,方法是将@@SQL_MODE更改为匹配,但要适当谨慎地执行此操作,因为更严格的行为通常也更多纠正并帮助避免无效值的无声强制。