在使用jdbc向Oracle中插入和查询时间数据时,我们总是得考虑一下选择怎样的类型才能插入最准确的数据,使用什么类型

接收才能从Oracle中接收全时间数据,在这里我总结一下。

(一)插入时间数据

如果我们要向Oracle数据中插入类似于"yyyy-MM-dd"的时间数据,也就是没有时分秒的数据,那么我们就可以java.sql.Date
数据类型。这个类型的时间只含有年月日,没有时分秒。 java.sql.Date有两个构造函数:Date(int year, int month, int day)和 Date(long date)。不过前者已经被弃用用,建议使用 后者。所以我们可以先构造java.util.Date的时间数据,然后再转为 java.sql.Date类型。下面附上由"yyyy-MM-dd"类型的字符串数据 转化为相应的java.util.Date时间数据的代码:

根据年月日参数得到java.util.Date时间数据的代码:
public Date getDate(int year,int month,int day){String s_date=year+"-"+month+"-"+day;SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Date date_value=new Date();try {date_value=dateFormat.parse(s_date);} catch (ParseException e1) {e1.printStackTrace();}return date_value;
}根据时间字符串获得java.util.Date时间类型的数据:
public Date getDate(String dateStr){SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Date date_value=new Date();try {date_value=dateFormat.parse(dateStr);} catch (ParseException e1) {e1.printStackTrace();}return date_value;
}

然后由java.util.Date转化为java.sql.Date的代码为(假设utilDate为前者类型时间值):

java.sql.Date dateValue=new java.sql.Date(utilDate.getTime());

如果我们要插入带时分秒的完整数据类型时,比如2017-03-25 20:37:30时,我们就不能使用java.sql.Date类型插入,因为它会自动截取时分秒数据,我们必须得用java.sql.Timestamp,它能包含完整的时分秒。
   java.sql.Timestamp也有两个构造函数:Timestamp(int year, int month, int date, int hour, int minute, int second, int nano)和Timestamp(long time)。前者已经被弃用了,建议使用后者。所以我们可以先构造完整时间类型的java.util.Date类型数据,然后再转化为java.sql.Timestamp类型。

根据完整时间字符串转化为java.util.Date类型数据
public Date getDate(String dateStr){SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date_value=new Date();try {date_value=dateFormat.parse(dateStr);} catch (ParseException e1) {e1.printStackTrace();}return date_value;
}

然后由java.util.Date转化为java.sql.Timestamp时间数据的代码为(假设utilDate为前者类型时间值):

java.sql.Timestamp dateValue=new java.sql.Timestamp(utilDate.getTime());

要插入以上两种类型的时间数据时,可以用PreparedStatement.setDate()和preparedStatement.setTimeStamp()函数来实现。

(二)查询时间数据

当我们从数据库中取时间数据时,我们可以用java.util.Date来接收上面讲的两种时间。对于"yyyy-MM-dd"类型的时间,可以 先用 ResultSet.getDate()函数来获得java.sql.Date数据,然后再将java.sql.Date类型数据转化为java.util.Date类型。转换方法 和上面类似:

java.util.Date dateValue=new java.util.Date(sqlDate.getTime()) //sqlDate假设是java.sql.Date类型的数据

当我们要获取"yyyy-MM-dd HH:mm:ss"类型的数据时,可以用ResultSet.getTimeStamp()函数来获得java.sql.Timestamp类型数据,然后由java.sql.Timestamp类型数据转化为java.util.Date类型数据。转化方法为:

java.util.Date dataValue=new java.util.Date(timeValue.getTime()); //假设timeValue是TimeStamp类型数据

jdbc关于操作Oracle时间数据解析相关推荐

  1. C#操作Oracle中大数据(Blob)

    之前在网上搜索C#操作Oracle中大数据的源代码,找到的文章基本都是一篇,都是没有提供引用库的,还是得自己写一个 - - 代码如下: 1 using System; 2 using System.D ...

  2. oracle:时间数据的处理

    刷题过程中,受时间数据所困.为此,整理出以下关于时间操作的基本知识点,受益匪浅.真香,原来还可以这么搞⛏!!! 文章目录 日期函数 `date`的加减 时间戳与`date`型数据之间的关系 日期操作 ...

  3. KFS Oracle RAC 数据解析同步配置方法

    一.logminer方式解析 1.数据库配置 - Oracle 1. 数据库中需要先设置 NSL_DATE_FORMAT,命令如下,设置好以后需要重启数据库: ALTER SYSTEM SET NLS ...

  4. idea如何给oracle添加数据_intelij idea下使用java和JDBC连接oracle数据库及简单的SQL操作...

    intelij idea下使用java和JDBC连接oracle数据库及简单的SQL操作 发布时间:2018-07-04 10:09, 浏览次数:2532 , 标签: intelij idea jav ...

  5. 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集

    文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...

  6. JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  7. jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)

    使用jdbc连接并操作Oracle数据库(增删改查IDUS) [oracle@zaibei-db ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Pro ...

  8. 使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  9. 基于QT的【第一个项目】设计+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作

    基于QT的第一个项目+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作 第一阶段 网络编程局域网TCP/IP聊天QT实现 main.c ma ...

最新文章

  1. Nilearn中的基本操作和查看
  2. python语言自学-python语言系统学习(四)
  3. 硬盘盘符无法识别或已损坏,别急着格式化
  4. 山西省职高计算机分数线,2020年山西五年制高职和普通中专录取分数线
  5. 安卓SDK之YUV-Image
  6. 使用Notepad++来比较文件
  7. 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?
  8. Python操作MySQL(二) ORM篇
  9. windwo下载完nvm无法执行node
  10. 【财务篇】如何群发工资条?
  11. mongodb 副本集搭建
  12. python远程监控_Python实现远程端口监控实例
  13. 蓝桥杯算法训练-隐匿的刺客
  14. linux修改默认22端口失败,【原创文章】修改亚马逊AWS EC2 LINUX系统SSH默认22端口失败的原因和解决办法...
  15. 470余万条疑似12306用户数据遭贩卖 嫌疑人被刑拘
  16. TypeScript - 一种思维方式
  17. java 法定节假日_java 获取n个工做往后的日期(包含法定节假日、双休日、节后补班)...
  18. MATLAB中repmat函数用法
  19. Web前端期末大作业---新农村建设网页设计
  20. 【报告分享】2020年中国房地产销售额百亿企业排行榜-中国指数研究院(附下载)

热门文章

  1. CodeBlocks问题解决
  2. 近期状态几点简单思考
  3. DEDE获得顶级栏目名称
  4. CSharp设计模式读书笔记(3):抽象工厂模式(学习难度:★★★★☆,使用频率:★★★★★)...
  5. 【福利】计算机公开课合集(视频教程)
  6. 如何在CentOS 7上使用HAproxy Loadbalancer设置Percona XtraDB集群(负载均衡)
  7. Python第十二章-多进程和多线程01-多进程
  8. nuxt asyncData extendRoutes nuxtServerInit
  9. 【Python】解决No name 'QWidget' in module 'PyQt5.QtWidgets'
  10. C#LeetCode刷题之#728-自除数(Self Dividing Numbers)