oracle五位long型日期,Oracle中依据Date型转换成Java对应的long型毫秒数

Oracle中根据Date型转换成Java对应的long型毫秒数

在Java开发中,很多时候我们为了方便会直接使用long型来保存时间,可以通过System.currentTimeMillis()或者是java.util.Date.getTime()来获取;取值为当前日期时间与1970-01-01相差的毫秒数;

但是在Oracle里面,默认没有直接提供获取当前时间的秒数的相关function,所以要想在SQL里面获得毫秒数,只能自己手动计算下喽,如下:

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') current_date, (sysdate- to_date('1970-01-01','yyyy-mm-dd')) * 86400 current_milli from dual;

CURRENT_DATE        CURRENT_MILLI

-------------------               -------------

2011-03-28 18:42:11     1301337731

时区导致的问题: 比如我使用GMT+08 北京时间,所以按照上面的方式从Oracle中计算出来的秒数经Java中转换后的日期会比正常日期大8h;

结合自己系统的时区对SQL语句稍作修改即可:

SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') current_date,

2         (sysdate - 8 / 24 - to_date('1970-01-01', 'yyyy-mm-dd')) * 86400000 current_milli

3    from dual;

CURRENT_DATE             CURRENT_MILLI

-------------------               -------------

2011-03-28 18:42:11    1301308931

用简单的Java测试代码测试、结果显示完全匹配;Java代码如下:

Date date = new Date(1301337731L);

System.out.println(date);           //2009-08-25 17:33:17

//得到当前日期的秒数

Date d=new Date();

System.out.println(d.getTime()/1000);   //d.getTime()得到的是毫秒数  1301309324

//知道毫秒数得到当前日期

Date d1=new Date(1301308931*1000l);  //此值为毫秒数

System.out.println(sdf.format(d1));            //2011-03-28 18:42:11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值