我正在使用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));
答案 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
比较的结果才能在字符串表示形式上发挥作用。