插入sql的时间戳给我错误:
SQLException:数据截断:日期时间值不正确:''对于列'日期'在第1行 SQLState:22001 VendorError:0
这是它在java中的样子:~~~~~~~~~~~~~~~~~~String sql = "INSERT into complaint (ComplaintID,Date) VALUES" + "(?,?)";
GetCurrentTimeStamp stamp = new GetCurrentTimeStamp();
PreparedStatement rss = con.prepareStatement(sql);
rss.setInt(1,newComplaint.getComplaintID());
rss.setTimestamp(2,stamp.getTimeStamp());
newComplaint.setMsgResponse(MessageManager.msgResponse.SUCCESS);
rss.executeUpdate();
这是GetCurrentTimeStamp类:~~~~~~~~~~~~~~~~~~
import java.sql.Timestamp;
import java.util.Date;
public class GetCurrentTimeStamp
{
private java.util.Date date= new java.util.Date();
public Timestamp getTimeStamp(){
return new java.sql.Timestamp(date.getTime());
}
}
这是Mysql代码:~~~~~~~~~~~~~~~~~~
CREATE TABLE `complaint`
(
`ComplaintID` int(11) NOT NULL AUTO_INCREMENT,
`Date` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`ComplaintID`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
请帮忙!!!!谢谢!
答案 0 :(得分:0)
你的SQLState说它是一个太长的字符串。
将date/time/timestamp
值分配给主机变量时会发生这种情况
不够大。
一个版本的setTimestamp的方法doc:
setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
使用UTC的示例:
stmt.setTimestamp(1, t, Calendar.getInstance(TimeZone.getTimeZone("UTC")))
其中 1 是索引, t 是时间戳对象,日历获取时区。
答案 1 :(得分:0)
我已经解决了我的问题,这些是我所做的改变:
String sql = "INSERT into complaint (ComplaintID,Date) VALUES" + "(?,?)";
PreparedStatement rss = con.prepareStatement(sql);
rss.setInt(1,newComplaint.getComplaintID());
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyy
java.util.Date date= new java.util.Date();
Date now = new Date();
String strDate = sdfDate.format(now);
Timestamp complainDate= Timestamp.valueOf(strDate);
rss.setTimestamp(2, complainDate);
rss.executeUpdate();