【发布时间】:2023-04-03 03:40:02
【问题描述】:
我有一条sql语句:
Insert into MYSCHEMA.TABLE1 (ID,MY_DATE) values (167600,to_timestamp('15-APR-14 01.36.58.803000000 PM','DD-MON-RR HH.MI.SS.FF AM'));
当我读到这种格式是正确的(如here 所述)但oracle 返回错误SQL Error: ORA-01843: not a valid month。知道如何解决这个问题吗?我使用的是 Oracle Database 11b 快捷版。
【问题讨论】:
-
my_date是日期还是时间戳字段?如果是约会,您的NLS_DATE_FORMAT和NLS_TIMESTAMP_FORMAT设置为什么?听起来像是一个隐式转换问题。或者可能不太可能是NLS_DATE_LANGUAGE问题。 -
NLS_DATE_LANGUAGE 设置为四月的缩写不是 APR 的语言听起来不错。
-
MikeW,正如我在 oracle 网站上看到的,MON 是一种有效的月份格式。 @AlexPoole,这是一种时间戳格式。 NLS_TIMESTAMP_FORMAT=RR/MM/DD HH24:MI:SSXFF
-
MY_DATE 是一个 TIMESTAMP(3) 并且 NLS_DATE_FORMAT=RR/MM/DD。顺便说一句,这有关系吗?我以为
to_timestamp函数的第二个参数是时间戳格式。 -
只有在进行隐式转换时才重要;如果
my_date是时间戳(尽管名称令人困惑),则不存在,并且如果 NLS 格式仍然匹配。这样NLS_DATE_LANGUAGE就错了;还是在设置日期/时间戳字段的表上有触发器?
标签: sql database oracle oracle11g