在java开发中,很多时候我们为了方便会直接使用long型来保存时间,可以通过system.currenttimemillis()或者是java.util.date.gettime()来获取;取值为当前日期时间与1970-01-01相差的毫秒数; 但是在Oracle里面,默认没有直接提供获取当前时间的毫秒数的相关
在java开发中,很多时候我们为了方便会直接使用long型来保存时间,可以通过system.currenttimemillis()或者是java.util.date.gettime()来获取;取值为当前日期时间与1970-01-01相差的毫秒数;
但是在Oracle里面,默认没有直接提供获取当前时间的毫秒数的相关function,所以要想在SQL里面获得毫秒数,只能自己手动计算下喽,如下:
不好意思,上次我写这篇文章时自己用的时候只是想在Oracle中计算毫秒数并保持在Oracle中,并没有拿到Java中再转换,所以没有详细测试,从而导致某些看我博客的朋友提出不匹配的问题; 现在我测试了一把,应该是时区导致的问题: 比如我使用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
------------------- -------------
2009-08-25 17:33:17 1251192797000
立即学习“Java免费学习笔记(深入)”;
用简单的Java测试代码测试、结果显示完全匹配;Java代码如下:
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号