我在服务器(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上工作,对吗?
发布于 2018-04-29 18:03:31
服务器之间的@@SQL_MODE设置不同。从5.6开始,MySQL服务器对@@SQL_MODE使用了更严格的默认值。
如果启用了
NO_ZERO_DATE或NO_ZERO_IN_DATESQL模式,则不允许使用零日期或部分日期。在这种情况下,STR_TO_DATE()返回NULL并生成一个警告 str-to-date
以前版本的文档中也显示了同样的信息。
您通常可以更改较新的服务器,以模拟旧服务器的行为(通常是允许的,有时是错误的),方法是将@@SQL_MODE更改为匹配的,但要适当谨慎地进行更改,因为更严格的行为通常也更正确,有助于避免对无效值的无声强制。
https://stackoverflow.com/questions/50086642
复制相似问题