Oracle Date to_char返回不同的结果

时间:2016-11-23 10:29:17

标签: oracle date oracle11g

我的本​​地开发机器上有一个数据库,我们的测试服务器上有一个数据库。基本上,我的开发机器上的表格是从测试机器上复制过来的。

但是,我发现to_char函数处理相同日期的方式有所不同。在我的开发机器上,如果我运行以下查询:

select test_date, to_char(test_date, 'YYYY-MM-DD')
from test.table
where id = 'C0007784'

我得到以下结果:

31-DEC-99 1999-12-31

在针对相同架构和数据运行相同查询的测试服务器上,我得到以下内容:

31-DEC-99 1899-12-31

to_char的行为差异可能是由于两个Oracle实例中的设置不同吗?

如果我运行SELECT value FROM v$nls_parameters WHERE parameter ='NLS_DATE_FORMAT';,我会为这两个实例获得DD-MON-RR

1 个答案:

答案 0 :(得分:2)

因此,您使用DD-MON-YY格式将表的内容导出到csv文件。 YY显然会引起歧义。我想当你导入文件时,99被解释为1999而不是1899.我不知道数据库用来猜测整年的确切机制,但无论如何Oracle strongly recommends YYYY in date format

  

注意:Oracle建议您使用4位数年份元素(YYYY)   由于这些原因,而不是较短的年份元素:4位数   年元素消除了歧义。

     

较短的年份元素可能会影响查询优化,因为   在查询编译时不知道year,只能在   运行时间。