【发布时间】:2026-01-22 14:40:01
【问题描述】:
我正在尝试将字符串更改为时间格式,但我的数据库配置似乎有些问题。因为当我尝试跟踪查询时,它给了我 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 中尝试相同的查询时,一切正常。一定有一些配置问题。 如果有人可以提供帮助,我将不胜感激。提前致谢。
【问题讨论】:
-
奇怪。我发现它在 MySQL 5.5 中有效,但在 5.7 中无效。
-
看起来像一个错误。
-
仅供参考,您的声明适用于我在 mysql 5.6 上。我想知道你的配置是否有不同的东西。有没有机会添加
show variables like "sql_mode";的输出我看到在mysql文档中至少有一个基于sql_mode dev.mysql.com/doc/refman/5.7/en/…的gatcha -
可能还值得做一个日期格式测试,看看是否出现了意外情况,例如
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