【发布时间】:2017-02-11 17:11:17
【问题描述】:
我在这里为类似的问题发红,但我没有t find solution for my problem, how to insert datetime field in mySql database using PreparedStatement in java? I didnt 找到与此问题和 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 是有问题的,因为在数据库中只保存了此属性的一部分 - Date,当我使用此方法时,精确地保存了日、月和年。但是小时、分钟和秒只是 00:00:00。所以数据库中的整个日期如下所示:
2016-06-26 00:00:00
我插入日期的数据表中的此列是日期时间类型。当我进行调试时,我看到这个 - dezurstvo.getDatum().getTime()) 具有通过表单插入的正常日期值。所以它有日、月、年、时、分和秒,但是这个 ps.setDate,实际上是 ps,只有日、月和年的值。
我认为问题出在 SQL 查询中,但是当我只有 SQL 查询时我不知道该怎么做?在 VALUES 中,而不是某个实际日期。
感谢您的帮助!
【问题讨论】:
-
你可以用
java.sql.Timestamp代替Date。