首页 > 解决方案 > 如何在oracle中修剪时间戳字段的毫秒数

问题描述

我有一个表EMPLOYEE,它有两个TIMESTAMP字段"CRTE_DTM""END_DTM".

我想在顶EMPLOYEE表上创建一个视图,我可以在这两个字段上放置一些函数,TIMESTAMP以仅以 3 毫秒的精度返回。

例子:

如果我在EMPLOYEE表中有以下行

CRTE_DTM
----------------
10-SEP-02 02.10.10.123000000 PM

我想修剪时间戳以只有 3 毫秒精度,见下文,

CRTE_DTM
----------------
10-SEP-02 02.10.10.123 PM

注意:我正在使用此视图将数据加载到表中,其中"CRTE_DTM"字段"END_DTM"是 TIMESTAMP

标签: sqloracletimestamp

解决方案


如果您可以重新创建表(或添加列、复制数据、删除旧表并重命名),则可以使用 datatype TIMESTAMP(3)。默认为TIMESTAMP6 位小数,但可以覆盖。

或者,您可以转换为具有指定格式的字符串,并且(如果您想使用 TIMESTAMP 可以选择)再次返回:

select to_timestamp(
    to_char(crte_dtm, 'YYYY-MM-DD HH24:MI:SS.FF3'),
    'YYYY-MM-DD HH24:MI:SS.FF3') from employee;

推荐阅读