java.sql.Date对应标准sql里的Date类型,它会把时、分、秒、毫秒位置归零,除非确认程序逻辑的确要这样做,否则时间变量采用这种类型时会导致逻辑错误。
javadoc:
为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。
怪不得插入以后再读出来,日期是对的,时间全是0
将数据类型改为java.util.date? 不行:java.sql.SQLException: 无效的列类型 Query
换用java.sql.timestamp,但是又得到java.lang.IllegalArgumentException: Cannot convert oracle.sql.TIMESTAMP@1d7e64f of type class oracle.sql.TIMESTAMP to class java.util.Date
最后搜到这一篇,先存着,应该可行
java操作oracle时间
作者:武林 日期:2009-04-21
字体大小: 小 中 大
以前也遇到到JAVA到oracle的时间问题,要不就是时间精度不够,要不是时间格式不正确,小问题能烦死人啊!
今天找到个方法了。当然不一定是最好,如果以后发现更好的解决方法再来改正。
首页oracle那头用于存储时间的类型用TIMESTAMP类型,然后java这边用下面代码进行时间格式化
Java代码
1. Calendar c=new GregorianCalendar();
2. java.util.Date d = c.getTime();
3. java.sql.Timestamp ts= new java.sql.Timestamp(d.getTime());
然后存入oracle。不过在oracle里头看的话会显示这种格式“21-4月 -09 04.20.34.562000 下午”。
不过没关系,只要取出来的时候不是这样就可以了。
接着取出时间,会发现这个时间精度很高,样式:“2009-04-21 16:59:38.093”
一般情况下我们只需要精确到秒就OK了,所以也要格式化一下:
Java代码
1. public static String getDate(Timestamp date) {
2. return new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(date);
3. }
OK了!
javadoc:
为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。
怪不得插入以后再读出来,日期是对的,时间全是0
将数据类型改为java.util.date? 不行:java.sql.SQLException: 无效的列类型 Query
换用java.sql.timestamp,但是又得到java.lang.IllegalArgumentException: Cannot convert oracle.sql.TIMESTAMP@1d7e64f of type class oracle.sql.TIMESTAMP to class java.util.Date
最后搜到这一篇,先存着,应该可行
java操作oracle时间
作者:武林 日期:2009-04-21
字体大小: 小 中 大
以前也遇到到JAVA到oracle的时间问题,要不就是时间精度不够,要不是时间格式不正确,小问题能烦死人啊!
今天找到个方法了。当然不一定是最好,如果以后发现更好的解决方法再来改正。
首页oracle那头用于存储时间的类型用TIMESTAMP类型,然后java这边用下面代码进行时间格式化
Java代码
1. Calendar c=new GregorianCalendar();
2. java.util.Date d = c.getTime();
3. java.sql.Timestamp ts= new java.sql.Timestamp(d.getTime());
然后存入oracle。不过在oracle里头看的话会显示这种格式“21-4月 -09 04.20.34.562000 下午”。
不过没关系,只要取出来的时候不是这样就可以了。
接着取出时间,会发现这个时间精度很高,样式:“2009-04-21 16:59:38.093”
一般情况下我们只需要精确到秒就OK了,所以也要格式化一下:
Java代码
1. public static String getDate(Timestamp date) {
2. return new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(date);
3. }
OK了!