我在服务器(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,对吗?
答案 0 :(得分:0)
@@SQL_MODE
设置因服务器而异。从5.6开始,MySQL Server对@@SQL_MODE
使用了更严格的默认值。
如果启用了
NO_ZERO_DATE
或NO_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
更改为匹配,但要适当谨慎地执行此操作,因为更严格的行为通常也更多纠正并帮助避免无效值的无声强制。