时区的Oracle日期格式掩码是什么?
我需要从外部源插入一个日期格式,其中包括时区的三个字母代码,但是TZD格式掩码似乎不起作用时区的Oracle日期格式掩码是什么?,oracle,date,formatting,mask,Oracle,Date,Formatting,Mask,我需要从外部源插入一个日期格式,其中包括时区的三个字母代码,但是TZD格式掩码似乎不起作用 insert into blah values (to_date('Thu, 18 Feb 2010 08:37:00 EST','Dy, DD Mon YYYY HH24:MI:SS TZD')); ORA-01821: date format not recognized 如果我移除“TZD” Oracle中这种insert语句的正确掩码是什么 desc blah Name
insert into blah
values (to_date('Thu, 18 Feb 2010 08:37:00 EST','Dy, DD Mon YYYY HH24:MI:SS TZD'));
ORA-01821: date format not recognized
如果我移除“TZD”
Oracle中这种insert语句的正确掩码是什么
desc blah
Name Null? Type
----------------------------------------- -------- ----------------------------
D DATE
编辑:我将表列从日期类型更改为时间戳类型,并得到相同的错误。日期列没有时区作为选项。您必须将列创建为数据类型
TIMESTAMP WITH timezone
或TIMESTAMP WITH LOCAL timezone
,此外,to_DATE
函数不理解您正在应用的时区格式掩码
SQL> CREATE TABLE T
2 (DT DATE,
3 TS TIMESTAMP,
4 TSTZ TIMESTAMP WITH TIME ZONE,
5 TSLTZ TIMESTAMP WITH LOCAL TIME ZONE);
Table created.
SQL> INSERT INTO T (TSLTZ) VALUES
2 (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD'))
3 /
1 row created.
SQL> INSERT INTO T (TSTZ) VALUES
2 (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD'))
3 /
1 row created.
如果时区与您无关,只需使用SUBSTR函数将其从字符串中删除,然后插入,如第二个示例所示
SQL> CREATE TABLE T
2 (DT DATE,
3 TS TIMESTAMP,
4 TSTZ TIMESTAMP WITH TIME ZONE,
5 TSLTZ TIMESTAMP WITH LOCAL TIME ZONE);
Table created.
SQL> INSERT INTO T (TSLTZ) VALUES
2 (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD'))
3 /
1 row created.
SQL> INSERT INTO T (TSTZ) VALUES
2 (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD'))
3 /
1 row created.