数据截断 - 尝试插入时间时的日期值不正确

时间:2013-07-24 13:39:55

标签: android mysql jdbc

我的插入声明

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

我无法理解为什么我收到错误,因为我可以看到格式正确...

我在此之前的日期遇到了同样的问题,但设法用Google搜索正确的格式,但到目前为止,我对这个时间问题的努力一无所获

EDIT 请参阅用于创建此表的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,这是问题吗?我应该将它们设置为什么类型?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

纠正@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”栏目