Oracle数据库表列时间戳

时间:2015-01-21 05:07:32

标签: sql database oracle

我正在尝试使用以下结构在Oracle数据库中创建表:

CREATE TABLE orderlines(collectionTime TIMESTAMP NOT NULL);

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

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

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

此外,格式是什么?

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

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

2 个答案:

答案 0 :(得分:1)

  

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

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

  

此外,格式是什么?

格式仅适用于 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>
  

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

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

答案 1 :(得分:0)

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