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

在使用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值