Java—以正确的方式格式化日期并将其插入mysql数据库

Java—以正确的方式格式化日期并将其插入mysql数据库,java,mysql,date,Java,Mysql,Date,好的,我有一个带有日期选择器的表单,它以dd-mm-yyyy格式提供输入值 我在检查每一步的输出,但我在第一步上卡住了。部分代码是这样的 Servlet控制器: Pacijent pacijent = new Pacijent(); try { Date datum = new SimpleDateFormat("dd-mm-yyyy").parse(request.getParameter("datum")); pacijent.setDatum(datum); } catch

好的,我有一个带有日期选择器的表单,它以dd-mm-yyyy格式提供输入值

我在检查每一步的输出,但我在第一步上卡住了。部分代码是这样的

Servlet控制器:

Pacijent pacijent = new Pacijent();
try {
    Date datum = new SimpleDateFormat("dd-mm-yyyy").parse(request.getParameter("datum"));
    pacijent.setDatum(datum);
} catch (ParseException e) {
    e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
public class Pacijent {
    private int id;
    private String ime;
    private String prezime;
    private Date datum;
    private String adresa;
    // Getters and Setters...
}
Pacijent pacijent = new Pacijent();
try {
   Date dop = new SimpleDateFormat("dd-MM-yyyy").parse(request.getParameter("datum"));
        pacijent.setDatum(dop);
} catch(ParseException e) {
            e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
Pacijent类:

Pacijent pacijent = new Pacijent();
try {
    Date datum = new SimpleDateFormat("dd-mm-yyyy").parse(request.getParameter("datum"));
    pacijent.setDatum(datum);
} catch (ParseException e) {
    e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
public class Pacijent {
    private int id;
    private String ime;
    private String prezime;
    private Date datum;
    private String adresa;
    // Getters and Setters...
}
Pacijent pacijent = new Pacijent();
try {
   Date dop = new SimpleDateFormat("dd-MM-yyyy").parse(request.getParameter("datum"));
        pacijent.setDatum(dop);
} catch(ParseException e) {
            e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
在PacijentDao类中插入函数

public void addPacijent(Pacijent pacijent) {
    try {
        PreparedStatement ps = connection.prepareStatement("INSERT INTO pacijent (ime, prezime, datum, adresa) VALUES (?,?,?,?)");
        ps.setString(1, pacijent.getIme());
        ps.setString(2, pacijent.getPrezime());
        ps.setDate(3, (Date) pacijent.getDatum());
        ps.setString(4, pacijent.getAdresa());
        ps.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
public void addPacijent(Pacijent pacijent) {
    try {
        PreparedStatement ps = connection.prepareStatement("INSERT INTO pacijent (ime, prezime, datum, adresa) VALUES (?,?,?,?)");
        ps.setString(1, pacijent.getIme());
        ps.setString(2, pacijent.getPrezime());
        ps.setDate(3, new java.sql.Date(pacijent.getDatum().getTime()));
        ps.setString(4, pacijent.getAdresa());
        ps.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
在我点击提交按钮后,它会像下面这样输出我的日期2017年1月18日星期三00:04:00 CET
。我需要帮助以mysql接受的方式解析它。数据库中的基准字段为日期格式

谢谢

ps.setDate();请求与java.util.Date不同的java.sql.Date

你可以尝试使用

ps.setDate("a", new java.sql.Date(pacijent.getDatum().getTime()));
 or use a timestamp 
ps.setTimestamp(3, new Timestamp(pacijent.getDatum().getTime()));

好的,我已经找到了一个方法来做到这一点。这是正确的代码。 Servlet控制器:

Pacijent pacijent = new Pacijent();
try {
    Date datum = new SimpleDateFormat("dd-mm-yyyy").parse(request.getParameter("datum"));
    pacijent.setDatum(datum);
} catch (ParseException e) {
    e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
public class Pacijent {
    private int id;
    private String ime;
    private String prezime;
    private Date datum;
    private String adresa;
    // Getters and Setters...
}
Pacijent pacijent = new Pacijent();
try {
   Date dop = new SimpleDateFormat("dd-MM-yyyy").parse(request.getParameter("datum"));
        pacijent.setDatum(dop);
} catch(ParseException e) {
            e.printStackTrace();
}
out.println(pacijent.getDatum());
//not important part of a code ...
//dao.addPacijent(pacijent);
在PacijentDao类中插入函数

public void addPacijent(Pacijent pacijent) {
    try {
        PreparedStatement ps = connection.prepareStatement("INSERT INTO pacijent (ime, prezime, datum, adresa) VALUES (?,?,?,?)");
        ps.setString(1, pacijent.getIme());
        ps.setString(2, pacijent.getPrezime());
        ps.setDate(3, (Date) pacijent.getDatum());
        ps.setString(4, pacijent.getAdresa());
        ps.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
public void addPacijent(Pacijent pacijent) {
    try {
        PreparedStatement ps = connection.prepareStatement("INSERT INTO pacijent (ime, prezime, datum, adresa) VALUES (?,?,?,?)");
        ps.setString(1, pacijent.getIme());
        ps.setString(2, pacijent.getPrezime());
        ps.setDate(3, new java.sql.Date(pacijent.getDatum().getTime()));
        ps.setString(4, pacijent.getAdresa());
        ps.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

格式应为“dd-MM-yyyy”。小写的
mm
表示分钟,大写的表示月。FYI的副本,像、
java.text.SimpleTextFormat等麻烦的旧日期时间类现在被类取代了。看见