日期格式问题 STR_TO_DATE('18:11:52', '%H:%i:%s') Returns NULL

Date Format issue STR_TO_DATE('18:11:52', '%H:%i:%s') Returns NULL

我正在尝试将字符串更改为时间格式,但我的数据库配置似乎有些问题。因为当我尝试跟踪查询时,它在 return

中给了我 null
mysql> select STR_TO_DATE('18:11:52', '%H:%i:%s');
+-------------------------------------+
| STR_TO_DATE('18:11:52', '%H:%i:%s') |
+-------------------------------------+
| NULL                                |
+-------------------------------------+
mysql> show warnings;
+---------+------+---------------------------------------------------------------+
| Level   | Code | Message                                                       |
+---------+------+---------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '18:11:52' for function str_to_date |
+---------+------+---------------------------------------------------------------+

但是当我在另一个 Mysql 服务器上尝试相同的查询时,一切正常。肯定有一些配置问题。 如果有人可以提供帮助,我将不胜感激。提前致谢。

这意味着您启用了 NO_ZERO_DATENO_ZERO_IN_DATE SQL 模式,因此 MySQL 将不允许您转换带有隐式日期 0000-00-00 到日期时间。

由于您的输入值实际上是一个时间字符串(不是日期时间),因此使用 CONVERT() 函数可能更有意义,如下所示:

SELECT CONVERT('18:11:52', TIME);