针对数据库处理而言,util.Date数据库并不支持,必须用sql.Date,但你的问题中这个也不行。因为sql.Date只有年月日,时分秒则是用sql.Time存放。直接将"2002-5-22 22:22:22"之类String 转换成 sq.Date类型会丢失时分秒的信息。所以如果时间要精确到时分秒数据的话,不要用sql.Date,用java.sql.Timestamp,它类似sql.Date,但多了时分秒。给你个转换class如下:调用时注意要用try……catch捕捉异常。
public class StringToDate {
public final static java.sql.Timestamp string2Date(String dateString)
throws java.lang.Exception {
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util类型
//java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型,不含时分秒
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型
return dateTime;
}
}
public class StringToDate {
public final static java.sql.Timestamp string2Date(String dateString)
throws java.lang.Exception {
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util类型
//java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型,不含时分秒
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型
return dateTime;
}
}
咖啡兄的方法是对的。
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd");
java.util.Date ud = formatter.parse(str);
java.sql.Date birthDay = new java.sql.Date(ud.getTime());
java.util.Date date = null;
PreparedStatement pstmt = null;
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
sdate=request.getParameter("OutDate");
date=format.parse(sdate);
time = new Timestamp(date.getTime());
pstmt.setTimestamp(1, time);}