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
FYI。我正在使用PL / SQL Developer进行此实验。
答案 0 :(得分:2)
产品实际上没有默认日期格式,reference guide表示系统级NLS_DATE_FORMAT
的默认值基于NLS_TERRITORY
。虽然this说“标准”是“DD-MON-RR”,但我认为如果你没有在数据库级别指定一个值,那就是你得到的,至少在我曾经使用的平台上。
创建新数据库时,初始化参数可以包含特定的NLS_DATE_FORMAT
,也可以在以后更改。
但是系统级NLS_DATE_FORMAT
可以被客户端,会话或TO_CHAR
调用覆盖。您可以查看v$nls_parameters
以查看系统值,并nls_session_parameters
查看当前会话值。如果您愿意,可以使用alter session
进行更改。
我很确定你会发现PL / SQL Developer会在其偏好的某个地方将会话NLS_DATE_FORMAT
设置为MM/DD/YYYY
。
通常最好不要依赖该值,并且总是使用显式格式掩码进行显示,例如TO_CHAR(<column>, 'YYYY-MM-DD HH24:MI:SS')
。
全球化指南here和here中NLS_DATE_FORMAT
还有更多内容;还有一点关于日期显示here;以及日期格式模型元素here
答案 1 :(得分:1)
取决于NSL_DATE_FORMAT
取决于NLS_TERRITORY
看看:http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams122.htm