【问题标题】:Data truncation-Incorrect date value when trying to insert a time数据截断 - 尝试插入时间时的日期值不正确
【发布时间】:2013-07-24 00:44:01
【问题描述】:

我的插入语句

INSERT INTO tblData_FY14 
VALUES (STR_TO_DATE('24/07/2013','%d/%m/%Y'), 
        STR_TO_DATE('14:31:07','%h:%i:%s'), 
        STR_TO_DATE('14:31:20','%h:%i:%s'), 
        1, 1, 2, 3, 4, 13)

我得到的错误:

com.mysql.jdbc.MysqlDataTruncation: Data truncation:
         Incorrect date value: '14:33:21' for column 'TimeofStop' at row 1

我不知道为什么会出现错误,据我所知格式是正确的...

在此之前的日期我也有同样的问题,但设法通过谷歌搜索正确的格式来解决它,但到目前为止我为这个时间问题所做的努力都没有结果

编辑 请参阅创建此表的 C# 代码:

MySqlCommand command = new MySqlCommand("CREATE TABLE IF NOT EXISTS tblData" + GVars.curFY +
                        " (" +
                        "DateofStop DATE, " +
                        "TimeofStop DATETIME, " +
                        "TimeofStart DATETIME, " +
                        "CategoryID INT REFERENCES tblDtCategory(CategoryID), " +
                        "DowntimeID INT REFERENCES tblDowntime(DowntimeID), " +
                        "AreaID INT REFERENCES tblMachineArea(AreaID), " +
                        "ProblemID INT REFERENCES tblProblem(ProblemID), " +
                        "CauseID INT REFERENCES tblCause(CauseID), " +
                        "DowntimeSeconds INT);", dbConn);

“TimeofStop”和“TimeofStart”的类型是日期时间 但是,mySQL 命令提示符将它们显示为 DATE,这是问题所在吗?我应该将它们设置为什么类型?

【问题讨论】:

  • 您有DATEDATE_Time 格式吗?
  • tblData_FY14 中的列类型是什么?编辑:特别是 TimeofStop
  • 使用 %H 而不是 %h

标签: android mysql jdbc


【解决方案1】:

使用%H 而不是%h


%H 使用 24 小时格式,其中 %h 使用 12 小时格式

INSERT INTO tblData_FY14 
VALUES (STR_TO_DATE('24/07/2013','%d/%m/%Y'), 
        STR_TO_DATE('14:31:07','%H:%i:%s'), 
        STR_TO_DATE('14:31:20','%H:%i:%s'), 
        1, 1, 2, 3, 4, 13)

【讨论】:

  • 应该有CONCAT('0000-00-00 ', STR_TO_DATE('14:31:07','%H:%i:%s'))
【解决方案2】:

更正@Akhil 的帖子:

INSERT INTO tblData_FY14 
VALUES (STR_TO_DATE('24/07/2013','%d/%m/%Y'), 
    CONCAT('0000-00-00 ',STR_TO_DATE('14:31:07','%H:%i:%s')), 
    CONCAT('0000-00-00 ',STR_TO_DATE('14:31:20','%H:%i:%s')), 
    1, 1, 2, 3, 4, 13);
  • 编辑: 没有意义 “DateofStop DATE”和“TimeofStop DATETIME”列

【讨论】:

  • 我明白你关于摆脱 DATE 字段的观点,现在我有 2 个 DATETIME 字段并且它工作得很好......谢谢你的帮助
猜你喜欢
  • 2018-10-25
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
相关资源
最近更新 更多