其实很早以前就经常碰到这个问题,就是得到自1970年1月1日以来的秒数。
这个问题很容易解决:
SQL> SELECT (SYSDATE - TO_DATE('1970-1-1 8', 'YYYY-MM-DD HH24')) * 86400 FROM DUAL;
(SYSDATE-TO_DATE('1970-1-18','YYYY-MM-DDHH24'))*86400
-----------------------------------------------------
1167040878
用当前的时间减去1970年1月1日8时,得到的天数乘以24小时乘以3600秒,得到的结果就是系统时间戳。这里用8时的原因时系统所处时区为东8区。
而同事提的需求是得到这个毫秒值,而且要相对准确的,将上面的结果直接乘1000是不行的。
而且同事已经通过JAVA外部过程的方式实现了,方法类似于:
SQL> create or replace and compile java source named "getcurrenttime" as
2 public class getcurrenttime extends Object
3 {
4 public static long getcurrenttime()
5 {
6 return System.currentTimeMillis();
7 }
8 }
9 /
Java已创建。
SQL> CREATE OR REPLACE FUNCTION F_GETCURRENTTIME_JAVA