Oracle - 如何将时间戳截断为毫秒

时间:2018-04-26 13:22:17

标签: sql oracle plsql

oracle函数current_timestamp创建一个微秒分辨率的时间戳,即6位十进制数字:

> select current_timestamp from dual;

2018-04-26 13:20:07.253909

我如何(使用纯SQL或PL / SQL)将此转换为毫秒分辨率,只有3位十进制数,并将其存储在时间戳字段中:

2018-04-26 13:20:07.253

2 个答案:

答案 0 :(得分:2)

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3') FROM dual;

SELECT CAST(CURRENT_TIMESTAMP AS TIMESTAMP(3)) FROM dual;

<强>输出

TO_CHAR(CURRENT_TIMESTAMP,'YYYY-MM-DDHH24:MI:SS.FF3')
-----------------------------------------------------
2018-04-26 13:26:16.642

答案 1 :(得分:2)

我认为正确的转换将是

SELECT
    CAST(CURRENT_TIMESTAMP AS TIMESTAMP(3))
FROM dual;

TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')会返回STRING但不会返回TIMESTAMP,即对于INTERVAL操作等进一步处理,您必须将其转换回TIMESTAMP。< / p>