Java #1411-日期时间值不正确:';11:21:21';函数str_to_date

Java #1411-日期时间值不正确:';11:21:21';函数str_to_date,java,mysql,sql,Java,Mysql,Sql,我不明白为什么日期格式不正确: 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-函数stru to_dat

我不明白为什么日期格式不正确:

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-函数stru to_date的日期时间值不正确:“11:21:21”

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>

谢谢您的帮助。

@xQbert-这不是5.7版中的错误!!!!! 在版本5.7中,是在日期中设置了NO\u ZERO\u的sql\u模式 这意味着只接受有效日期。如果你移除它们 一切都像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>

可能重复的Nope不是dup。那一个的引号存储在db中。这里的情况显然不是这样。这的确很奇怪,在我看来还行……时间列的数据类型是什么?在SQL fiddle 5.6版mySQL上工作。。。假设日期为日期,时间为时间数据类型。这意味着这是数据库中的版本或配置问题;或者驱动程序将查询传递给mySQL…谢谢你的帮助,我自己找不到解决方案。