如何在java中更改sql日期格式

时间:2016-02-02 02:36:51

标签: java swing sqlite jdbc jcalendar

我正在使用JDBC连接& Java Swing UI和那里我使用了SqLite DB。
这里我有一个java组件,它是jCalender到取件日期&我在String中选择日期。


首先我将字符串转换为java.util日期,然后将java.util.date转换为java.sql.date但我的日期字符串格式为“dd / MM / YYYY”&

然后
DateFormat format = new SimpleDateFormat(“dd / MM / YYYY”,Locale.ENGLISH);

我设置了上面写的具体日期格式。但是当我在日期之间搜索记录时仍然存在问题。

这里我附上了代码的副本plz guyz帮助我这非常重要。



    String from_date = ((JTextField) txt_bilty_date_start.getDateEditor().getUiComponent()).getText();
    String to_date = ((JTextField) txt_bilty_date_end.getDateEditor().getUiComponent()).getText();

    DateFormat format = new SimpleDateFormat("dd/MM/YYYY", Locale.ENGLISH);
    Date date1 = format.parse(from_date);
    Date date2= format.parse(to_date);

    java.sql.Date sqlDate1 = new java.sql.Date(date1.getTime());
    java.sql.Date sqlDate2 = new java.sql.Date(date2.getTime());

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/YYYY");

    System.out.println("\t\tafter change date");
    System.out.println(sdf.format(sqlDate1));
    System.out.println(sdf.format(sqlDate2));

    String sql = "select * from employee where record_date BETWEEN '"+sdf.format(sqlDate1)+"' AND '"+sdf.format(sqlDate2)+"' ";

    pst=conn.prepareStatement(sql2);
    rs = pst.executeQuery();
    tbl_employee.setModel(DbUtils.resultSetToTableModel(rs));

1 个答案:

答案 0 :(得分:2)

假设您的record_date 是数据库中的SQL日期(而不是某些varchar),请使用正确的PreparedStatement进行尝试。

String sql = "select * from employee where record_date BETWEEN ? AND ?";
pst=conn.prepareStatement(sql2);
pst.setDate(1, sqlDate1);
pst.setDate(2, sqlDate2);
rs = pst.executeQuery();

请注意,在Java 7中引入try-with-resource后,最终关闭的整个try / catch / check变得更加容易。

如果您的日期是varchar ,则需要反转字段的顺序以预先确定最重要的字段 - yyyy MM dd以某种方式。只有这样,String / VARCHAR比较的结果才能在字符串表示形式上发挥作用。