如何在oracle中调整时间戳字段的毫秒数

lh80um4z  于 2022-11-03  发布在  Oracle
关注(0)|答案(4)|浏览(358)

我有一个表EMPLOYEE,它有两个字段TIMESTAMP"END_DTM"
我想在EMPLOYEE表的顶部创建一个视图,在该视图中,我可以在这两个字段上放置一些函数,以返回精度仅为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的

fkvaft9z

fkvaft9z1#

如果可以重新创建表(或添加列、复制数据、删除旧数据和重命名),则可以使用数据类型TIMESTAMP(3)TIMESTAMP的默认值为6位小数,但可以覆盖它。
或者,您可以转换为具有指定格式的字符串,然后(如果您希望使用TIMESTAMP,则可以选择)再转换回来:

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

xurqigkl2#

您可以尝试以下操作:

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;

希望这对你有帮助。

fnx2tebb

fnx2tebb3#

10-SEP-02 02.10.10.123000000 PM是与10-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;
mbzjlibv

mbzjlibv4#

select localtimestamp(9) from dual;

相关问题