-1

我有以下声明,在 MySQL 的其他安装中似乎可以正常工作并返回 TIME,而现在返回 NULL(根据文档,这意味着转换失败):

mysql> select STR_TO_DATE('17:54:23', '%H:%i:%s') AS test;
+------+
| test |
+------+
| NULL |
+------+
1 row in set, 1 warning (0,00 sec)

mysqls> show warnings;
+---------+------+---------------------------------------------------------------+
| Level   | Code | Message                                                       |
+---------+------+---------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '17:54:23' for function str_to_date |
+---------+------+---------------------------------------------------------------+
1 row in set (0,00 sec)

然而根据文档“它需要一个字符串 str 和一个格式字符串格式。如果格式字符串包含日期和时间部分,则 STR_TO_DATE() 返回一个 DATETIME 值,如果字符串只包含日期或时间部分,则返回一个 DATE 或 TIME 值”。如前所述,曾经在以前的版本中工作,并且我有其他安装 5.7 的人告诉我它适用于他们。

有关本地 MySQL 版本的信息:

mysql> SHOW VARIABLES LIKE "%version%";
+-------------------------+-------------------------+
| Variable_name           | Value                   |
+-------------------------+-------------------------+
| innodb_version          | 5.7.20                  |
| protocol_version        | 10                      |
| slave_type_conversions  |                         |
| tls_version             | TLSv1,TLSv1.1           |
| version                 | 5.7.20-0ubuntu0.16.04.1 |
| version_comment         | (Ubuntu)                |
| version_compile_machine | x86_64                  |
| version_compile_os      | Linux                   |
+-------------------------+-------------------------+

安装是“开箱即用”的 Linux Mint,没有任何调整。任何人都知道为什么它不起作用?

4

1 回答 1

0

Doh,它似乎只需要进一步阅读文档:

“如果启用了 NO_ZERO_DATE 或 NO_ZERO_IN_DATE SQL 模式,则不允许零日期或部分日期。在这种情况下,STR_TO_DATE() 返回 NULL 并生成警告:”

于 2017-11-05T09:57:17.303 回答