oracle systimestamp (sysdate) 到毫秒

2021-12-20 00:00:00 database oracle stored-procedures

您能否提供存储函数的实现以获取当前 systimestamp 以毫秒为单位.
我可以使用的东西

从dual中选择current_time_ms;

并获取当前时间与 UTC 1970 年 1 月 1 日午夜之间的差值(以毫秒为单位).

谢谢.

解决方案

  • 数据库时区不可知
  • 以毫秒为单位
  • 在 XE 中工作
<前>函数 current_time_ms退货号码是out_result 数;开始选择提取(天从(sys_extract_utc(systimestamp)-to_timestamp('1970-01-01','YYYY-MM-DD')))* 86400000+ to_number(to_char(sys_extract_utc(systimestamp), 'SSSSSFF3'))进入 out_result从双重;返回输出结果;结束 current_time_ms;

Could you provide implementation of stored function to get current systimestamp as milliseconds.
Something I can use like

select current_time_ms from dual;

and get the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.

Thanks.

解决方案

  • DB timezone agnostic
  • with milliseconds
  • works in XE

    function current_time_ms
        return number
    is
        out_result number;
    begin
        select extract(day from(sys_extract_utc(systimestamp) - to_timestamp('1970-01-01', 'YYYY-MM-DD'))) * 86400000 
            + to_number(to_char(sys_extract_utc(systimestamp), 'SSSSSFF3'))
        into out_result
        from dual;
        return out_result;
    end current_time_ms;

相关文章