MySQLstr_to_date时间转换失败
MySQL str_to_date time conversion fails
我有以下声明,在其他安装中 MySQL 似乎工作正常,return 是一个 TIME,而现在 return 是一个 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 和一个格式字符串 format。STR_TO_DATE() returns 如果格式字符串同时包含日期和时间部分,则为 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 |
+-------------------------+-------------------------+
安装是 "out of the box"、Linux Mint,没有任何调整。
有人知道为什么它不起作用吗?
哦,似乎只需要进一步阅读文档:
"If the NO_ZERO_DATE or NO_ZERO_IN_DATE SQL mode is enabled, zero dates or part of dates are disallowed. In that case, STR_TO_DATE() returns NULL and generates a warning:"
我有以下声明,在其他安装中 MySQL 似乎工作正常,return 是一个 TIME,而现在 return 是一个 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 和一个格式字符串 format。STR_TO_DATE() returns 如果格式字符串同时包含日期和时间部分,则为 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 |
+-------------------------+-------------------------+
安装是 "out of the box"、Linux Mint,没有任何调整。 有人知道为什么它不起作用吗?
哦,似乎只需要进一步阅读文档:
"If the NO_ZERO_DATE or NO_ZERO_IN_DATE SQL mode is enabled, zero dates or part of dates are disallowed. In that case, STR_TO_DATE() returns NULL and generates a warning:"