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
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步