数据截断:日期时间值不正确:' null'在Java中

时间:2014-12-04 17:32:57

标签: java mysql sql null

我有一个以下查询,它使用java将数据插入到mysql中。

它给了我这个错误

Data truncation: Incorrect datetime value: 'null' for column 'lastEventTime' at row 1

lastEventTime设置为可为空的datetime类型,默认为NULL。不幸的是,当我在phpmyadmin中运行相同的查询时,它接受并将数据插入到表中。那么java的解决方案是什么?

我的零件代码如下。

1 个答案:

答案 0 :(得分:1)

单引号(')表示字符串文字。在这里,您并不是说您插入字符串'null',而是实际的null值 - 只需删除引号:

INSERT INTO tblDetails 
SET    eID=1010,entID=2,tID=65,eDateTime='2014-12-04 14:34:44',lastEventTime=null

此外,除非lsatEventTime具有不合需要的默认值,否则您可以完全删除对它的引用,并让数据库使用默认值(null):

INSERT INTO tblDetails 
SET    eID=1010,entID=2,tID=65,eDateTime='2014-12-04 14:34:44'

编辑:
要回答评论中提出的问题,即使在动态构建insert语句时也可以这样做。请按以下一行:

"',lastEventTime='"+rs10d.getString("lastEventTime")+"'";

...并添加一些逻辑来检查null s:

"',lastEventTime=" + (rs10d.getString("lastEventTime") == null ? 
                      "null" : 
                      "'"+rs10d.getString("lastEventTime")+"'");