MySQL数据库Date型数据插入问题

时间:2023-03-10 01:58:32
MySQL数据库Date型数据插入问题

MySQL数据库中,Date型数据插入问题,总是提示如下错误:

“java.util.Date cannot be cast to java.sql.Date”

解决办法:

1、首先,获取Date型数据

 Date entry_date; //这是java.util.Date类型的
String entryDateString = "2013-01-01";
try{
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
entry_date = sDateFormat.parse(entryDateString);
}catch (ParseException e){
System.out.println("ParseException:"+e.getMessage());
}

2、将Java类型的Date数据转换为SQL类型的数据(java.util.Date --> java.sql.Date)

 prepareStatement.setDate(new java.sql.Date(entry_date.getTime()));
prepareStatement.executeUpdate();

3、注意:不同类型数据包含的时间信息不同

  • java.util.Date 型数据包含 年月日和时分秒等信息;
  • java.sql.Timestamp 型数据包含 年月日和时分秒,以及毫秒等信息;
  • java.sql.Date 型数据只包含年月日信息;
  • java.sql.Time 型数据只包含时分秒信息;

所以,上述不同类型数据间的转换,最好使用getTime()获取从1970年1月1日,00:00:00开始的毫秒数,然后再进行转换。否则,会出现错误。

实例如下:

 java.util.Date d = new java.util.Date();
java.sql.Date d1 = new java.sql.Date(d.getTime());
java.sql.Time t1 = new java.sql.Time(d.getTime());
java.util.Date dd = new java.util.Date(d1.getTime());//+t1.getTime());
System.out.println("date d:" + d);
System.out.println("date d1: " + d1);
System.out.println("time t1: " + t1);
System.out.println("datetime dd: " + dd); java.sql.Timestamp ts = new java.sql.Timestamp(d.getTime());
System.out.println("timestamp ts:" + ts);//含有毫秒数
long lms = ts.getTime();
java.sql.Date date = new java.sql.Date(lms);
java.sql.Time time = new java.sql.Time(lms);
System.out.println("timestamp ts:" + date + " " + time); //无毫秒数

显示结果如下:

 date d:Mon Aug 26 12:13:31 CST 2013
date d1: 2013-08-26
time t1: 12:13:31
datetime dd: Mon Aug 26 12:13:31 CST 2013
timestamp ts:2013-08-26 12:13:31.667
timestamp ts:2013-08-26 12:13:31