oracle sysdate毫秒,oracle systimestamp(sysdate)到毫秒

7 个答案:

答案 0 :(得分:18)

DB timezone agnostic

毫秒

适用于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;

答案 1 :(得分:7)

我所知道的最好的事情是:

select extract(day from (systimestamp - timestamp '1970-01-01 00:00:00')) * 86400000

+ extract(hour from (systimestamp - timestamp '1970-01-01 00:00:00')) * 3600000

+ extract(minute from (systimestamp - timestamp '1970-01-01 00:00:00')) * 60000

+ extract(second from (systimestamp - timestamp '1970-01-01 00:00:00')) * 1000 unix_time

from dual;

我不太确定您对时区有什么要求。您可能需要对此进行微调。

答案 2 :(得分:4)

添加到@Mykhaylo Adamovych的答案(看起来正确!)这里使用oracle Java支持(即不在XE而不在AWS RDS中)是一种更简单的方法。不太便携(如果你关心的话),但在我的测试中似乎更快。

CREATE or replace FUNCTION current_java_timestamp RETURN number

AS LANGUAGE JAVA NAME 'java.lang.System.currentTimeMillis() return java.lang.Long';

/

答案 3 :(得分:1)

下面的代码给出了以毫秒为单位的差异:

with t as (select systimestamp - to_timestamp(sysdate ) diff from dual)

select extract(day from diff) * 24 * 3600000+

extract(hour from diff) * 3600000+

extract(minute from diff) * 60000 +

extract(second from diff) * 1000

dif

from t

将毫秒转换为小时,分钟,秒,根据需要修改和使用以下查询:

with t as (select systimestamp - to_timestamp(sysdate ) diff from dual)

select extract(day from diff) * 24 * 3600000+

extract(hour from diff) * 3600000+

extract(minute from diff) * 60000 +

extract(second from diff) * 1000

dif,

(to_char (to_date(round(( extract(day from diff) * 24 * 3600000+

extract(hour from diff) * 3600000+

extract(minute from diff) * 60000 +

extract(second from diff) * 1000)/1000), 'SSSSS' ), 'HH24"Hrs" MI"Min" SS"Sec"')) timeval

from t

答案 4 :(得分:1)

AFAIK,没有直接的方法来实现这一点(除了手动编写冗长的SQL函数)。

为什么你需要这个?

您可以使用存储的Java函数,然后使用Java提供的System.getCurrentMillis()来返回从1.1.1970到现在的毫秒数值。

答案 5 :(得分:0)

我已经发布了here一些将时间戳转换为纳秒和将纳秒转换为时间戳的方法。这些方法不受时区的影响,并且具有纳秒级的精度。

您只需将其调整为毫秒而不是纳秒。

SELECT (EXTRACT(DAY FROM (

SYSTIMESTAMP --Replace line with desired timestamp --Maximum value: TIMESTAMP '3871-04-29 10:39:59.999999999 UTC'

- TIMESTAMP '1970-01-01 00:00:00 UTC') * 24 * 60) * 60 + EXTRACT(SECOND FROM

SYSTIMESTAMP --Replace line with desired timestamp

)) * 1000 AS MILLIS FROM DUAL;

MILLIS

1598434427263.027

答案 6 :(得分:-1)

SELECT to_char(sysdate, 'HH24:MI:SS'), to_char(systimestamp, 'HH24:MI:SS.FF6') FROM dual

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值