com.mysql.jdbc.MysqlDataTruncation:数据截断:日期时间值不正确:' '

时间:2015-11-12 13:36:51

标签: java mysql jdbc

我花了最后一小时尝试通过时间戳插入日期和时间的替代版本,使用java进入sql数据库。

Date endDate = new Date();    
ptmt.setTimestamp(5, new java.sql.Timestamp(endDate.getTime()));

我的create table语句是

CREATE TABLE Location (
  UserID varchar(50),
  Latitude DOUBLE,
  Longitude DOUBLE,
  Altitude DOUBLE,
  TimeInserted timestamp
);

是否有其他方式输入日期。

在我准备好的语句中,我尝试在字符串中使用now(),但它查找了参数。

String queryString = "INSERT INTO Location(UserID,Latitude,Longitude,Altitude,TimeInserted) VALUES(?,?,?,?,now());";

然而,在搜索第5个参数时,它并不高兴。

有什么想法吗?

我尝试制作表格日期并设法简单地插入日期 - 但我需要时间来订购。

由于

2 个答案:

答案 0 :(得分:1)

  

然而,在搜索第5个参数时,它并不满意。

String queryString = "INSERT INTO Location(UserID,Latitude,Longitude,Altitude,TimeInserted) VALUES(?,?,?,?,now());";

您的查询字符串有4个绑定参数,但此语句ptmt.setTimestamp(5, new java.sql.Timestamp(endDate.getTime()));正在尝试将long绑定到不存在的第5个参数

答案 1 :(得分:0)

要记住的事情

public Timestamp(int year, int month, int date, int hour, int minute, int second, int nano)

<强> 已过时。而是使用构造函数Timestamp(long millis)

Date endDate= new Date();
java.sql.Timestamp eDate = new java.sql.Timestamp(enddate.getTime());
long endDatetime= eDate.getTime();

ptmt.setTimestamp(5, endDatetime);

试试这个。