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

本文详细介绍了在MySQL数据库中处理Date型数据插入时遇到的java.util.Datecannotbecasttojava.sql.Date错误,并提供了有效的解决方法。包括如何正确获取Date数据、将其转换为SQL类型数据以及注意事项,确保数据正确无误地插入数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值