oracle 将系统日期转时间戳(毫秒)

1.情景展示

在实际开发过程中,我们经常会有两个日期时间间隔的计算,比如:计算相隔的毫秒数。

2.将日期转秒

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间:1970年01月01日08时00分00秒)起至现在的总秒数。

得到自1970年1月1日以来的秒数。

SELECT (SYSDATE - TO_DATE('1970-1-1 8', 'YYYY-MM-DD HH24')) * 86400
  FROM DUAL;

说明:

用当前的时间减去1970年1月1日8时,得到的天数乘以24小时乘以3600秒,得到的结果就是系统时间戳;

这里,用8时的原因是:系统所处时区为东8区;

1天=1天*24小时*60分*60秒=86400秒。

3.将日期转毫秒

得到自1970年1月1日以来的毫秒数。

SELECT (SYSDATE - TO_DATE('1970-1-1 8', 'YYYY-MM-DD HH24')) * 86400000 +
       TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF')) AS MILLIONS
  FROM DUAL;

利用了DATE类型的计算结果,将其扩大1000倍之后,加上了SYSTIMESTAMP中的毫秒部分。

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2022-06-09 19:35  Marydon  阅读(9188)  评论(0编辑  收藏  举报