0

Oracle 11g 文档说默认日期格式是 DD-MON-YYYY,这意味着如果我使用以下方法将日期插入日期列:

insert into table t values(1, '02-JAN-2013')

然后选择它

select * from t

它应该显示为 02-JAN-2013,而实际上它显示日期为 01/02/2013。

为什么他的差异或我错过了什么。

参考。http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html

供参考。我在这个实验中使用 PL/SQL Developer。

4

2 回答 2

2

产品并没有真正的默认日期格式,参考指南指出NLS_DATE_FORMAT系统级别的默认日期格式是基于NLS_TERRITORY. 虽然说“标准”是“DD-MON-RR”,但我认为如果你没有在数据库级别指定值,至少在我工作过的平台上,这就是你得到的。

当您创建一个新数据库时,初始化参数可以包含一个特定的NLS_DATE_FORMAT,以后也可以更改。

但是系统级别NLS_DATE_FORMAT可以被客户端、会话或在TO_CHAR调用中覆盖。您可以查看v$nls_parameters系统值,并nls_session_parameters查看您当前的会话值。alter session如果你愿意,你可以改变它。

我很确定您会发现 PL/SQL Developer 正在将会话设置NLS_DATE_FORMATMM/DD/YYYY其首选项中的某个位置。

一般来说,最好不要依赖该值,并始终使用显式格式掩码进行显示,例如TO_CHAR(<column>, 'YYYY-MM-DD HH24:MI:SS').

这里这里NLS_DATE_FORMAT的全球化指南中有更多内容;还有一点关于这里的日期显示;并在此处概述日期格式模型元素

于 2013-06-26T17:24:21.777 回答
1

这取决于NSL_DATE_FORMAT那取决于NLS_TERRITORY

看看:http ://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams122.htm

于 2013-06-26T17:20:57.950 回答