【问题标题】:#1411 - Incorrect datetime value: '11:21:21' for function str_to_date#1411 - 不正确的日期时间值:函数 str_to_date 的“11:21:21”
【发布时间】:2017-09-17 15:31:53
【问题描述】:

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

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”

感谢您的帮助。

【问题讨论】:

  • 不,不是重复。那个有存储在数据库中的引号。这显然不是这里的情况。
  • 这确实很奇怪,我觉得还可以...
  • “时间”列的数据类型是什么?
  • 适用于 mySQL 的 SQL fiddle 5.6 版...sqlfiddle.com/#!9/4b15c4/1 假设日期为日期,时间数据类型为时间。因此暗示它是您数据库中的版本或配置问题;或者驱动程序将查询传递给 mySQL...

标签: java mysql sql


【解决方案1】:

@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>

【讨论】:

  • 感谢您的帮助,我自己找不到解决方案。
猜你喜欢
  • 1970-01-01
  • 2012-08-25
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
相关资源
最近更新 更多