我正在尝试使用以下结构在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
答案 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是几分钟。此外,你的面具中有几小时:秒:分钟,但这会导致错误的值而不是错误。