添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

2 人关注

我试图将一个字符串改为时间格式,但我的数据库配置似乎有些问题。 因为当我尝试以下查询时,它给我的回报是空的

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服务器上尝试同样的查询时,却很顺利。这一定是一些配置问题。 如果有人能帮助我,我很感激。谢谢。

5 个评论
很奇怪。我发现它在MySQL 5.5中工作,但在5.7中不工作。
似乎是一个错误。
仅供参考,你的声明在mysql 5.6上对我有效。我不知道你的配置是否有什么不同。 你是否有可能添加 show variables like "sql_mode"; 的输出?我看到在mysql文档中,至少有一个围绕sql_mode的gatcha dev.mysql.com/doc/refman/5.7/en/...
也许还值得做一个日期格式测试,看看是否有什么意外出现,比如 SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
这些会发生什么? SET @@SESSION.sql_mode='NO_ZERO_DATE,NO_ZERO_IN_DATE'; select STR_TO_DATE('18:11:52', '%H:%i:%s'); SET @@SESSION.sql_mode='ALLOW_INVALID_DATES'; select STR_TO_DATE('18:11:52', '%H:%i:%s');
mysql
linux
database
database-administration
Faizan Younus
Faizan Younus
发布于 2017-10-18
1 个回答
Ike Walker
Ike Walker
发布于 2017-10-18
已采纳
0 人赞同

这意味着你启用了 NO_ZERO_DATE NO_ZERO_IN_DATE 。启用了SQL模式,所以MySQL将不允许你将一个隐含日期为 0000-00-00 的时间字符串转换为日期时间。