如何在java中使用PreparedStatement在mySql数据库中插入datetime字段?

时间:2016-10-03 17:18:51

标签: java mysql sql

我在这里谈到类似的问题,但我没有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而不是实际日期。

感谢您的帮助!

2 个答案:

答案 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字段。