Oracle 数据库 Table 列时间戳

Oracle Database Table Column Timestamp

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

CREATE TABLE orderlines(collectionTime TIMESTAMP NOT NULL);

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

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

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

另外,格式是什么?

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

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

What would be the best datatype to use to store this timestamp? TIMESTAMP, or DATE?

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

Also, what would the format be?

格式仅适用于 DISPLAY。因此,请使用您想要显示的格式模型。您需要使用 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>

When I tried to import my CSV file containing all of the timestamps, SQL Developer Import Wizard didnt like the formatting.

这是您的 区域设置特定 NLS_DATE_FORMAT 的问题。

尝试'DD-MM-YYYY HH24:MI:SS-TZH:TZM'。这是 to_timestamp_tz 可以识别的掩码。请注意,MM 代表月而 MI 代表分钟。另外,你的掩码中有 hours:seconds:minutes,但这会导致错误的值而不是错误。