如何在oracle中修剪时间戳字段的毫秒数

时间:2018-04-30 19:04:55

标签: sql oracle timestamp

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

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

示例:

如果我在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&#39>的表格中

3 个答案:

答案 0 :(得分:1)

如果您可以重新创建表(或添加列,复制数据,删除旧的和重命名),则可以使用数据类型TIMESTAMP(3)。 <{1}}的默认值是6个小数位,但可以覆盖它。

或者,您可以转换为具有指定格式的字符串,并且(可选地,如果您要使用TIMESTAMP)可以转换回来:

TIMESTAMP

答案 1 :(得分:1)

您可以尝试以下方法:

CREATE VIEW myview AS
SELECT <other_columns>
     , CAST(crte_dtm AS TIMESTAMP(3)) AS crte_dtm
     , CAST(end_dtm AS TIMESTAMP(3)) AS end_dtm
  FROM employee;

希望这有帮助。

答案 2 :(得分:0)

10-SEP-02 02.10.10.123000000 PM10-SEP-02 02.10.10.123 PM的时间戳相同。你可以做的是选择一个显示所需格式的时间戳的字符串:

select to_char(timestamp_column, 'dd-MON-yy hh24.mi.ss.ff3', 'nls_date_language=english')
from mytable;