日期格式问题STR_TO_DATE('18:11:52','%H:%i:%s')返回NULL
问题描述:
我试图将字符串更改为时间格式,但在我的数据库配置中似乎出现了一些问题。因为当我尝试下面的查询它给我空作为回报日期格式问题STR_TO_DATE('18:11:52','%H:%i:%s')返回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_DATE
或NO_ZERO_IN_DATE
SQL模式,所以MySQL不会让你一个时间字符串转换为0000-00-00
为datetime隐式日期。
由于您输入的数值实际上是一个时间字符串(不是一个日期),它可能会更有意义,为您使用CONVERT()
功能,像这样:
SELECT CONVERT('18:11:52', TIME);
奇怪。我发现它在MySQL 5.5中工作,但不在5.7中。 –
看起来像一个错误。 –
仅供参考,你的声明适用于MySQL 5.6。我想知道你的配置中是否有不同的东西。是否有机会添加'show variables like'sql_mode“;'我看到在mysql文档中至少有一个基于sql_mode的gatcha的输出https://dev.mysql.com/doc/refman/5.7 /en/date-and-time-functions.html#function_str-to-date –