You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中如何截断TIMESTAMP字段毫秒数并保留3位精度

解决Oracle中TIMESTAMP保留3位毫秒精度的视图创建问题

针对你的需求,在Oracle数据库里可以非常简洁地实现——利用CAST函数直接将原TIMESTAMP字段转换为指定精度的TIMESTAMP类型,就能自动截断多余的毫秒位,完全符合你要的效果。

核心解决方案

创建视图时,对CRTE_DTM和END_DTM字段使用CAST(字段 AS TIMESTAMP(3))处理,其中TIMESTAMP(3)表示保留3位小数秒(也就是毫秒精度)。

完整视图创建SQL示例

CREATE OR REPLACE VIEW EMPLOYEE_VW AS
SELECT
    -- 这里保留你需要的其他字段,比如员工ID、姓名等
    EMPLOYEE_ID,
    FIRST_NAME,
    LAST_NAME,
    -- 处理时间字段,保留3位毫秒
    CAST(CRTE_DTM AS TIMESTAMP(3)) AS CRTE_DTM,
    CAST(END_DTM AS TIMESTAMP(3)) AS END_DTM
FROM EMPLOYEE;

效果验证

比如你提到的原数据:10-SEP-02 02.10.10.123000000 PM,经过CAST处理后,会自动截断为10-SEP-02 02.10.10.123 PM,而且返回的依然是TIMESTAMP类型,不是字符串,完美满足你的要求。

补充:如果需要四舍五入(而非截断)

如果你的场景需要对毫秒位进行四舍五入(比如原数据是.123500要变成.124),可以用字符串转换的方式实现:

TO_TIMESTAMP(TO_CHAR(CRTE_DTM, 'DD-MON-RR HH.MI.SS.FF3 AM'), 'DD-MON-RR HH.MI.SS.FF3 AM') AS CRTE_DTM

不过根据你的示例,截断的方式应该更贴合需求,所以优先推荐CAST方法,它的性能也更优。

内容的提问来源于stack exchange,提问作者SitGeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:53:56