我正在使用一个
TO_CHAR(TO_DATE(tdj_tran_dt,'DD-MON-RRRR'),'DD-MON-RRRR')
在我的一个观点中。
基础数据在表单中DD-MON-YY
,我必须在DD-MON-YYYY
屏幕中以表单形式显示它。
最初我是to_char(tdj_Tran_dt,'DD-MON-YYYY')
一个人使用,但没有成功。例如,20-OCT-17 将变为 20-OCT-0017。我的系统已迁移数据,因此在插入表时更改数据的形式将无济于事。所以为此我使用TO_CHAR(TO_DATE(tdj_tran_dt,'DD-MON-RRRR'),'DD-MON-RRRR')
了它似乎在任何地方都可以使用,除了在 unix 中。我有一个 proc 文件(通过 linux 运行),它调用这个视图并以 xls 格式写入数据。但在 proc 中打开游标时会出现 Oracle 错误 ORA-01843。将其改回to_char(tdj_Tran_dt,'DD-MON-YYYY')
似乎可以工作,但会带回原来的问题。
我只想知道数据库中是否有一些设置可以更改以解决此问题。我在两个不同的环境中运行相同的东西,并且 not a valid month 错误似乎只发生在一个环境中。我检查了 nls_parameters ,这在两种环境中似乎都是相同的。
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET AL32UTF8
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
我检查了很多地方,但没有解决方案。如果有人知道如何解决这个问题,请帮忙。