Oracle中根据Date型转换成Java对应的long型毫秒数
2009-01-06 13:48
357 查看
在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')) * 86400000 current_milli from dual;
CURRENT_DATE CURRENT_MILLI
------------------- -------------
2009-01-06 14:00:09 1231250409000
不好意思,上次我写这篇文章时自己用的时候只是想在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代码如下:
但是在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')) * 86400000 current_milli from dual;
CURRENT_DATE CURRENT_MILLI
------------------- -------------
2009-01-06 14:00:09 1231250409000
不好意思,上次我写这篇文章时自己用的时候只是想在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代码如下:
Date date = new Date(1251192797000L); //2009-08-25 17:33:17 System.out.println(date);
相关文章推荐
- Oracle中根据Date型转换成Java对应的long型毫秒数
- Oracle中根据Date型转换成Java对应的long型毫秒数
- oracle 时间类型 与java mybatis.xml 文件配置 resultMap 对应时间类型 JsonConfig 转换oracle里的时间类型
- java中从1970-1-1到当前时间之间的毫秒数转换为oracle date
- [置顶] oracle 快速查询数据库各种信息、及转换对应java代码
- java 毫秒转换成时,分,秒,毫秒 && 根据开始时间和天数,计算出几天后的时间
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- Oracle将以逗号分隔的数字字符串根据字典表转换为中文字符串
- Java中String型与Date型数据的互相转换
- JAVA把毫秒数转换成日期
- JAVA指定日期与毫秒数相互转换
- java将String转换成date存入oracle
- Java与Oracle 数据类型对应关系
- oracle数据类型和对应的java类型
- java 对象 转换成字节数组发送给服务器,根据服务器返回的字节数组自动组装成java对象。
- JAVA连接MySQL数据库(可转换成SQL Server、Oracle连接方式)(精华版)
- oracle中NUMBER类型和java中对应类型
- java 时间字符串 转换 毫秒
- java-转换时间日期格式字串为long型
- java 中将日期转换为毫秒 ,将毫秒转换为日期