我有以下声明,在MySQL的其他安装中似乎工作正常并返回TIME,而现在返回NULL(根据documentation,意味着转换失败):
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,没有调整。 任何人都知道为什么它不起作用?
答案 0 :(得分:0)
Doh,它只是需要进一步阅读文档:
“如果启用了NO_ZERO_DATE或NO_ZERO_IN_DATE SQL模式,则不允许零日期或部分日期。在这种情况下,STR_TO_DATE()返回NULL并生成警告:”