我在这里谈到类似的问题,但我没有t find solution for my problem, how to insert datetime field in mySql database using PreparedStatement in java? I didn
找到与此问题和PreparedStatement相关的任何内容。
所以,我有这段代码:
public void sacuvajDezurstva(List<Dezurstvo> listaDezurstava) throws SQLException {
String sqlSacuvajDezurstva = "INSERT INTO dezurstvo (Datum,IspitniRokID, NastavnikID, PredmetID) VALUES (?,?,?,?)";
PreparedStatement ps = konekcija.prepareStatement(sqlSacuvajDezurstva);
for (Dezurstvo dezurstvo : listaDezurstava) {
ps.setDate(1, new Date(dezurstvo.getDatum().getTime()));
ps.setLong(2, dezurstvo.getIspitniRok().getIspitniRokID());
ps.setLong(3, dezurstvo.getNastavnik().getNastavnikId());
ps.setLong(4, dezurstvo.getPredmet().getPredmetID());
ps.executeUpdate();
}
konekcija.commit();
}
此代码有效,但这里的第一个ps参数是Date是问题,因为在数据库中只有部分属性 - 日期被保存,当我使用这个方法时,正好保存了日,月和年。但是小时,分钟和秒只是00:00:00。所以数据库中的整个日期如下所示:
2016-06-26 00:00:00
我插入日期的数据表中的这一列是datetime类型。当我进行调试时,我看到这个--dezurstvo.getDatum()。getTime())具有通过表单插入的日期的正常值。所以它有,日,月,年,小时,分钟和秒,但这个ps.setDate,acctualy ps,只有日,月和年的值。
我认为问题出在SQL查询中,但是当我只有这个问题时,我不知道怎么做?在VALUES而不是实际日期。
感谢您的帮助!
答案 0 :(得分:1)
您需要格式化日期。请尝试以下
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
String currentDateTime = format.format(date);
然后在预准备语句中使用setString。
答案 1 :(得分:0)
要将Date
插入DATETIME
字段,其格式应为"yyyy-MM-dd HH:mm:ss"
。
另一种选择是改为使用TIMESTAMP
字段。