【问题标题】:Oracle Database Table Column TimestampOracle 数据库表列时间戳
【发布时间】:2015-01-21 13:34:38
【问题描述】:

我正在尝试在我的 Oracle 数据库中创建一个具有以下结构的表:

CREATE TABLE orderlines(collectionTime TIMESTAMP NOT NULL);

将连续出现的时间戳示例如下:

20-01-2015 11:33:48-04:00

存储此时间戳的最佳数据类型是什么? 时间戳,还是日期?

另外,格式是什么?

当我尝试导入包含所有时间戳的 CSV 文件时,SQL Developer 导入向导不喜欢这种格式。我试过了

DD-MM-YYYY HH24:SS:MM-TZ

【问题讨论】:

    标签: sql database oracle


    【解决方案1】:

    存储此时间戳的最佳数据类型是什么?时间戳,还是日期?

    TIMESTAMP 数据类型是 DATE 数据类型的扩展。除了 datetime 元素之外,TIMESTAMP 数据类型还包含秒的小数部分。它有两种形式,TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE。因此,如果您想要精确到几分之一秒以及时区元素,请选择 TIMESTAMP。否则,DATE 数据类型将为您提供日期时间元素。

    另外,格式是什么?

    格式仅适用于显示。因此,请使用您想要显示的格式模型。您需要使用TO_CHAR 和正确的格式模型。例如,

    SQL> select to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss') from dual;
    
    TO_CHAR(SYSDATE,'MM
    -------------------
    01/21/2015 11:02:27
    
    SQL> select to_char(sysdate, 'mm/dd/yyyy hh:mi:ss am') from dual;
    
    TO_CHAR(SYSDATE,'MM/DD
    ----------------------
    01/21/2015 11:03:04 am
    
    SQL>
    

    当我尝试导入包含所有时间戳的 CSV 文件时, SQL Developer 导入向导不喜欢这种格式。

    这是您的特定于语言环境的 NLS_DATE_FORMAT 的问题。

    【讨论】:

      【解决方案2】:

      尝试“DD-MM-YYYY HH24:MI:SS-TZH:TZM”。这是to_timestamp_tz 可以识别的掩码。请注意,MM 是几个月,MI 是分钟。此外,您的掩码中有小时:秒:分钟,但这会导致错误的值而不是错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-02
        • 1970-01-01
        相关资源
        最近更新 更多