【发布时间】:2015-12-19 06:30:09
【问题描述】:
我想知道Oracle环境中的哪个参数导致这个:
假设我在两个不同的服务器上有两个数据库。数据库中的数据相同。
在 sql developer 下我写了这个查询:
select to_char(date_column, 'DD/MM/YYYY') from my_table;
当我在 sql developer 中检查 my_table 时,日期显示为 'DD/MM/YY' 格式
在一台服务器上,查询返回: 1945 年 1 月 5 日(很好) 但另一方面: 01/05/2045(不好)。
问题:配置中的参数有什么不同?我的 ksh 脚本中这个参数的值应该是什么才能使它在两个基础上都起作用?
注意:替换 20 而不是 19 仅适用于本世纪前 50 年的日期。 实际上,在这两个数据库上,都显示了 01/05/1955。
谢谢
转储功能的结果:在这个日期 09/05/55 尝试
好的:
09/05/1955 Typ=12 Len=7: 119,155,5,9,1,1,1
坏的:
09/05/55 Typ=12 Len=7: 119,155,5,9,1,1,1
这是否称为不同存储?或者显示不同。在这两种情况下,存储了相同的字节,但我在问。
另外我想说的是,数据插入数据库的方式是通过拷贝来的
两个查询的结果:
在好的服务器上:
NUM NAME TYPE VALUE
224 nls_date_language 2
225 nls_date_format 2 DD/MM/YYYY
PARAMETER VALUE
NLS_DATE_FORMAT DD/MM/YYYY
NLS_DATE_LANGUAGE AMERICAN
选错了
NUM NAME TYPE VALUE
224 nls_date_language 2
225 nls_date_format 2
PARAMETER VALUE
NLS_DATE_FORMAT DD/MM/RR
NLS_DATE_LANGUAGE FRENCH
【问题讨论】:
-
它不会改变任何东西
-
对不起,我想错了。您正在转换为一个字符,这意味着它已经是一个日期,这意味着您获取数据的原因是因为这就是数据库中的数据。将数据放入数据库时,您必须使用
RRRR或RR日期格式进行转换? -
不,不是……两个数据库上的数据是一样的。
-
只是再次检查:您是否 100% 确定您在两台服务器中都有 DATE 类型的列和相同的数据?如果列是 CHAR 或 VARCHAR,这可以解释这一点。
-
听起来数据在一个数据库中以 YY 格式插入,在另一个数据库中以 YYYY 格式插入。