0

我的插入语句

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”的类型是 datetime 但是,mySQL 命令提示符将它们显示为 DATE,这是问题所在吗?我应该将它们设置为什么类型?

4

2 回答 2

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)
于 2013-07-24T14:05:53.660 回答
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”列是没有意义的
于 2013-07-24T14:11:49.817 回答