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

How to change sql date format in java

我正在使用 JDBC 连接和 Java Swing UI 并且我使用了 SqLite DB。
这里我有一个 java 组件,它是 jCalender 到取件日期,我将日期选入字符串。


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

然后
DateFormat 格式 = new SimpleDateFormat("dd/MM/YYYY", Locale.ENGLISH);

我设置了上面写的特定日期格式。但是当我搜索日期之间的记录时仍然有问题。

我在这里附上了一份代码副本,请大佬帮助我,这非常重要。



    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));

假设您的 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 for closed in finally 变得更加容易

如果你的日期 是一个 varchar 你将需要 颠倒你的字段的顺序 以在最前面显示最重要的字段 - yyyy MM dd 以某种方式。只有这样,String/VARCHAR 比较的结果才能像在字符串的字符串表示上一样工作。