环境:
在java中使用Date时,代码中需要使用java.util.Date包,但是sql语句是使用java.SQL.Date包的,所以如果在java代码中写sql date类型,需要进行转换。
java代码中需要导入 import java.util.Date 包。
分析:
1. 将传入的字符串拼接成完整的月份。
String sbrq_q = sbrq + "-01";
String sbrq_z = sbrq + "-31";
传入的是2005-08 ,经拼接变成 2005-08-01这样。
2. 将时间字符串转换成java.util.Date类型时间
需要导 import java.text.DateFormat 包,注意"yyyy-MM-dd" 这里的MM不能小写,否则月份会变成一月。
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
try {
date_sbrq_q = format1.parse(sbrq_q);
date_sbrq_z = format1.parse(sbrq_z);
} catch (ParseException e1) {
e1.printStackTrace();
}
3. 将java.util.Date类型时间转换成java.SQL.Date类型时间
java.sql.Date dateTime_q = new java.sql.Date(date_sbrq_q.getTime());
java.sql.Date dateTime_z = new java.sql.Date(date_sbrq_z.getTime());
4. 把java.SQL.Date时间替换成PreparedStatement语句中,并执行
String sql = "SELECT t1.*,t2.*,t3.zsxm_jc FROM ls_sbxx t1,ls_sbsmxx t2,dm_gy_zsxm t3 WHERE " +
"t1.nsrsbh = ? AND t1.sbrq >= ? AND t1.sbrq <= ? " +
"AND t2.zsxm_dm = t3.zsxm_dm AND t1.pzxh = t2.sbxx";
ps = con.prepareStatement(sql);
ps.setString(1, nsrsbh);
ps.setDate(2, dateTime_q);
ps.setDate(3, dateTime_z);
rs = ps.executeQuery();