我不明白为什么日期格式不正确:
INSERT INTO ticks (idticks, symbol, date, time, size, type) VALUES (
1,
'EUR-USD',
STR_TO_DATE('10-04-2017', '%d-%m-%Y'),
STR_TO_DATE('11:21:21', '%h:%i:%s'),
1.656,
'askbid');
MySQL 的回答: #1411 - 日期时间值不正确:函数 str_to_date 的“11:21:21”
谢谢你的帮助。
最佳答案
@xQbert - 这不是 5.7 版中的错误!!!! 在版本 5.7 中,sql_mode 设置为 NO_ZERO_IN_DATE 这意味着只接受有效日期。如果你删除它们 一切都像 5.6 一样工作
示例
mysql> INSERT INTO ticks (idticks, symbol, DATE, `time`, size, TYPE) VALUES (
-> 1,
-> 'EUR-USD',
-> STR_TO_DATE('10-04-2017', '%d-%m-%Y'),
-> STR_TO_DATE('11:21:21', '%h:%i:%s'),
->
-> 1.656,
-> 'askbid');
ERROR 1411 (HY000): Incorrect datetime value: '11:21:21' for function str_to_date
mysql> SHOW VARIABLES LIKE 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0,02 sec)
mysql> SET sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected, 1 warning (0,00 sec)
mysql> INSERT INTO ticks (idticks, symbol, DATE, `time`, size, TYPE) VALUES ( 1, 'EUR-USD', STR_TO_DATE('10-04-2017', '%d-%m-%Y'), STR_TO_DATE('11:21:21', '%h:%i:%s'), 1.656, 'askbid');
Query OK, 1 row affected (0,00 sec)
mysql>
关于java - #1411 - 不正确的日期时间值 : '11:21:21' for function str_to_date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43529001/