【问题标题】:Oracle: Select Milliseconds from Timestamp Type that Defaults with SYSTIMESTAMPOracle:从默认使用 SYSTIMESTAMP 的时间戳类型中选择毫秒
【发布时间】:2016-03-26 15:49:05
【问题描述】:

我的 Oracle 数据库中有一个 TIMESTAMP 类型的列。 default 列的值为SYSTIMESTAMP

我想SELECT 毫秒 FROM TIMESTAMP 列。我使用下面的查询没有成功:

SELECT TO_CHAR (MY_TIMESTAMP, 'dd-mm-yyyy hh24:mi:ss.FF') AS MY_TIMESTAMP
FROM MY_TABLE

-- Result: 20-12-2015 15:23:28.

如您所见,结果没有任何毫秒数,它是空的。如果我用.FF4 更改查询,则结果为.0000

如何以毫秒为单位选择列?

【问题讨论】:

  • 该列的确切数据类型是什么?对于 TIMESTAMP,您可以指定精度
  • @WernfriedDomscheit 这是时间戳。我在哪里可以指定精度?
  • 请运行此查询并将其结果附加到问题中:select column_name, data_type, data_length, data_precision, data_scale from user_tab_cols where table_name = 'MY_TABLE' and column_name = 'MY_TIMESTAMP'。该查询提供有关表中列的数据类型和小数秒精度的信息。可能是该列的精度太短并且不存储小数秒。

标签: oracle oracle11g timestamp milliseconds systimestamp


【解决方案1】:

时间戳列的精度可以设置

TIMESTAMP [(fractional_seconds_precision)]

在你的情况下 4 它是:

create table my_table
(id number,
  my_TIMESTAMP timestamp(4) default SYSTIMESTAMP);

您可以通过以下方式检查当前精度:

select column_name, data_scale from user_tab_columns 
where table_name = 'MY_TABLE' and column_name = 'MY_TIMESTAMP';

这是SQL Fiddle中的示例

可以通过以下方式更改显示:

 alter session set NLS_TIMESTAMP_FORMAT = 'DD-MON-RRRR HH:MI:SS.FF9';

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多