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

时间:2017-10-17 19:21:20

标签: mysql linux database database-administration

我正在尝试将字符串更改为时间格式,但在我的数据库配置中似乎有些问题。因为当我尝试跟随查询时它会给我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 Server中尝试相同的查询时,它就可以了。必须有一些配置问题。 如果有人可以提供帮助我感激提前谢谢。

1 个答案:

答案 0 :(得分:3)

这意味着您启用了NO_ZERO_DATENO_ZERO_IN_DATE SQL模式,因此MySQL不允许您将隐含日期为0000-00-00的时间字符串转换为日期时间。

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

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