时间那些事儿---Incorrect datetime value: '' for column 'CREATE_DATE' at row 1
来源:互联网 发布:mac u盘无法退出 编辑:程序博客网 时间:2024/05/16 17:31
【问题出现】
向数据库中插入时间有误
代码如下:
<span style="font-size:18px;">// 获取时间pstmt.setTimestamp(6,new Timestamp(new Date().getTime()));System.out.println(newTimestamp(new Date().getTime())); pstmt.executeUpdate();</span>报错如下:
解决方案一:
代码:
<span style="font-size:18px;">// 获取时间 pstmt.setTimestamp(6,newTimestamp(new Date().getYear(), new Date().getMonth(),newDate().getDay(), new Date().getHours(),newDate().getMinutes(), new Date().getSeconds(), 0));System.out.println(newTimestamp(new Date().getYear(), new Date().getMonth(),new Date().getDay(), new Date().getHours(),newDate().getMinutes(), new Date().getSeconds(), 0)); pstmt.executeUpdate();</span>
运行效果:
这是因为Timestamp对象中有一个方法:
<span style="font-size:18px;"> @Deprecated public Timestamp(int year, int month, intdate, int hour, int minute, intsecond, int nano) { super(year, month, date, hour, minute,second); if (nano > 999999999 || nano < 0){ throw newIllegalArgumentException("nanos > 999999999 or < 0"); } nanos = nano; }</span>
还有一个方法:
<span style="font-size:18px;"> public Timestamp(long time) { super((time/1000)*1000); nanos = (int)((time%1000) * 1000000); if (nanos < 0) { nanos = 1000000000 + nanos; super.setTime(((time/1000)-1)*1000); } }</span>
刚才出错用的也睡这个方法,那如果我就非得用参数为long的呢?请看解决方案二:
解决方案二
代码:
<span style="font-size:18px;">// 获取时间java.util.Date nowDate = new java.util.Date();// 取当前时间SimpleDateFormatdateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 转换时间格式Stringdate = dateFormat.format(nowDate); pstmt.setTimestamp(6,Timestamp.valueOf(date));System.out.println(Timestamp.valueOf(date)); pstmt.executeUpdate(); </span>
结果也成功了:
以上两种解决方案只是曲线救国了,真正的问题并没有得到解决。因为既然Timestamp的两种构造方法都可以使用,为什么我直接获取系统时间(long类型)就会出错呢:
<span style="font-size:18px;">// 获取时间 pstmt.setTimestamp(6,new Timestamp(System.currentTimeMillis()));System.out.println(System.currentTimeMillis()); pstmt.executeUpdate();</span>
然后我又发现了另外一个问题,当插入数据成功的时候,打印出来的时间的格式:
2016-09-15 11:08:22.0。
当而插入数据失败的时候:打印出来的时间
new Timestamp(new Date().getTime())----2016-09-1508:42:29:975
new Timestamp(System.currentTimeMillis())----1473908535581,跟进方法经过计算,格式同上。
哈哈,到这里就知道问题在哪儿了,就是时间格式最后的毫秒的问题。但是为什么学习视频里就没出错呢?经过查资料得知,视频里使用的是oracle数据,我实践的时候用的是mysql数据库。而oracle已经在date数据类型上扩展出来了timestamp数据类型,也就是说,它包括了所有date数据类型的年月日时分秒的信息,而且包括了小数秒的信息。而在mysql中date类型存放的是单纯的日期,time类型是单纯的时间,datetime和timestamp都是YYYY-MM-DD HH:MM:SS。而我们引用java.util.Date获取的时间是2016-09-15 08:42:29:975,所以当然会出错了。
找到问题所在,解决问题就随便选择一种解决就好啦。顺便也了解了以下几个知识点:
1.java.util.Date和java.sql.Date
http://www.cnblogs.com/humanchan/p/3546549.html
2.oracle数据库中的date类型数据
http://www.cnblogs.com/java-class/p/4742740.html
3.mysql数据库中的date和datetime和timestamp
http://www.2cto.com/database/201205/130951.html
- 时间那些事儿---Incorrect datetime value: '' for column 'CREATE_DATE' at row 1
- Data truncation: Incorrect datetime value: '' for column 'create_date' at row 1
- MySql Incorrect datetime value: '' for column 'dateTime' at row 1
- Incorrect datetime value: '' for column 'log_time' at row 1
- Incorrect datetime value: '' for column 'ordertime' at row 1
- 时间入库问题:Incorrect datetime value: '' for column 'createTime' at row 1
- Data truncation: Incorrect datetime value: '' for column 'xxxx' at row
- 解决Incorrect datetime value: '' for column 'time' at row 1的问题
- 【SSH网上商城】Incorrect datetime value: '' for column 'pdate' at row 1
- 【SSH网上商城】Incorrect datetime value: '' for column 'ordertime' at row 1
- Data truncation: Incorrect datetime value: '' for column 'pdate' at row 1
- 【SSH网上商城】incorrect datetime value:"for column 'pdate' at row 1"
- Data truncation: Incorrect datetime value: '' for column 'EVENT_DATE' at row 1
- Data truncation: Incorrect datetime value: '' for column 'start' at row 1的解决方法
- ERROR 1292 (22007): Incorrect datetime value: '' for column 'end_date' at row 1
- Data truncation: Incorrect datetime value: '' for column 'time' at row 1
- 关于解决Incorrect datetime value: '' for column '' at row 1的问题
- Incorrect date value: '' for column 'Birthday' at row 1
- hibernate中的Session对象
- HttpServletResponse对象
- poj 2763 Housewife Wind
- 313. Super Ugly Number
- 移植u-boot学习笔记9-----u-boot裁剪和修改默认参数
- 时间那些事儿---Incorrect datetime value: '' for column 'CREATE_DATE' at row 1
- Gson解析出现类似错误,com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
- JavaScript Array
- JS中string方法中常用方法之七:String.prototype.search()
- 同时找到最大值和最小值
- for循环删除list中多个元素出现的误区
- 枚举算法--讨厌的青蛙
- 暑期社会实践调查新闻稿
- mysql 引用php中变量