EXTRACT(MILLISECOND FROM (SYSTIMESTAMP - TIMESTAMP '1970-01-01 00:00:00')); 报错From只允许特定得内置函数 怎么修改
时间: 2023-08-25 12:06:03 浏览: 136
您可以使用以下语句将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替换为其他日期/时间值以获取该值。
相关问题
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 函数用于提取时间戳中的日期和时间信息。同时,将常数计算提前,避免了重复计算。
java 设定时间 为 2023-04-01 00:00:00
你可以使用 Java 中的 Date 或者 Calendar 类来设定时间。以下是使用 Calendar 类来设定时间的示例:
```
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2023);
calendar.set(Calendar.MONTH, Calendar.APRIL);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date date = calendar.getTime();
```
这样就可以设定时间为 2023 年 4 月 1 日 00:00:00。
阅读全文