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

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

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

解决办法:                                                           

1、首先,获取Date型数据

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

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

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

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

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

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

实例如下:

 1 java.util.Date d = new java.util.Date();
 2 java.sql.Date d1 = new java.sql.Date(d.getTime());
 3 java.sql.Time t1 = new java.sql.Time(d.getTime());
 4 java.util.Date dd = new java.util.Date(d1.getTime());//+t1.getTime());
 5 System.out.println("date d:" + d);
 6 System.out.println("date d1: " + d1);
 7 System.out.println("time t1: " + t1);
 8 System.out.println("datetime dd: " + dd);
 9 
10 java.sql.Timestamp ts = new java.sql.Timestamp(d.getTime());
11 System.out.println("timestamp ts:" + ts);//含有毫秒数
12 long lms = ts.getTime();
13 java.sql.Date date = new java.sql.Date(lms);
14 java.sql.Time time = new java.sql.Time(lms);
15 System.out.println("timestamp ts:" + date + " " + time); //无毫秒数

显示结果如下:

1 date d:Mon Aug 26 12:13:31 CST 2013
2 date d1: 2013-08-26
3 time t1: 12:13:31
4 datetime dd: Mon Aug 26 12:13:31 CST 2013
5 timestamp ts:2013-08-26 12:13:31.667
6 timestamp ts:2013-08-26 12:13:31
原文地址:https://www.cnblogs.com/bluepoint2009/p/mysql-date-insert-update.html