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

来源:互联网 发布:项目开发报价软件 编辑:程序博客网 时间:2024/05/17 23:09
在使用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类型数据






0 0