EXTRACT(SECOND FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')) * 1000 是什么意思
时间: 2023-10-21 20:04:31 浏览: 131
这是一条 SQL 语句,它的作用是计算当前时间与 1970 年 1 月 1 日 00:00:00 的时间差,单位为秒。接着将这个时间差转换成毫秒并返回结果。具体地说,它使用 SYSTIMESTAMP 函数获取当前时间,再用 TIMESTAMP 函数获取 1970 年 1 月 1 日 00:00:00 的时间戳,两者相减得到一个时间差,再用 EXTRACT 函数提取时间差中的秒数,并将其乘以 1000 转换成毫秒。最后返回计算结果。
相关问题
EXTRACT(DAY FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')) * 24 * 60 * 60 * 1000 + EXTRACT(HOUR FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')) * 60 * 60 * 1000 + EXTRACT(MINUTE FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')) * 60 * 1000 + EXTRACT(SECOND FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')) * 1000 + EXTRACT(MILLISECOND FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')); 优化下sql
可以使用 Oracle 内置函数 TO_TIMESTAMP 和 EXTRACT 来简化代码,如下所示:
```
SELECT (EXTRACT(DAY FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')) * 86400000
+ EXTRACT(HOUR FROM (SYSTIMESTAMP - TO_TIMESTAMP('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))) * 3600000
+ EXTRACT(MINUTE FROM (SYSTIMESTAMP - TO_TIMESTAMP('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))) * 60000
+ EXTRACT(SECOND FROM (SYSTIMESTAMP - TO_TIMESTAMP('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))) * 1000
+ EXTRACT(MILLISECOND FROM SYSTIMESTAMP)) AS milliseconds_since_epoch
FROM dual;
```
其中,TO_TIMESTAMP 函数用于将字符串转换为时间戳,EXTRACT 函数用于提取时间戳中的日期和时间信息。同时,将常数计算提前,避免了重复计算。
EXTRACT(MILLISECOND FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')); 报错From只允许特定得内置函数 怎么修改
您可以使用以下语句将UNIX时间戳(毫秒)提取为Oracle中的整数:
```
SELECT (SYSDATE - TO_DATE('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 FROM DUAL;
```
该查询将返回当前时间戳的整数值(以毫秒为单位)。您可以将SYSDATE替换为其他日期/时间值以获取该值。
阅读全文