floor(EXTRACT( MINUTE FROM systimestamp )/10)*10 改sql取整数
时间: 2024-06-05 20:12:52 浏览: 195
你可以使用 Oracle SQL 中的 FLOOR 函数来取整数。以下是修改后的 SQL:
SELECT FLOOR(EXTRACT(MINUTE FROM systimestamp)/10)*10 FROM your_table;
这将提取当前系统时间的分钟数,并将其除以 10 取整数,最后乘以 10 得到最终结果。注意,这仅适用于 Oracle 数据库。如果你使用其他数据库,请查阅其相应的文档以了解如何进行取整数的操作。
相关问题
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替换为其他日期/时间值以获取该值。
阅读全文