oracle java环境是否会更改NLS_DATE_FORMAT参数的值?
我有一台unix和一台linux服务器,分别用作数据库服务器和应用服务器。 数据库是Oracle 10g,应用服务器是Weblogic 9.3 MP3,安装了jRockit 1.5。 我在weblogic server中创建了一个连接池
我试着用四种不同的方法从NLS_数据库参数、NLS_会话参数和NLS_实例参数表中读取NLS_日期参数
- 如预期的那样,使用sqlplus为所有人显示DD-MON-YYYY李>
- 在我的web应用程序中,来自池的连接NLS_SESSION_PARAMETERS表显示为DD-MON-RR,表的其余部分显示为DD-MON-YYYY李>
- 一个独立的java程序直接获得db连接,结果与(3)中的相同
- 从我的电脑上运行了相同的程序,它显示的结果与(1)ie.DD-MON-YYYY中的结果相同李>
我没有在我的环境的任何地方设置NLS_LANG或NLS_DATE_格式(在db server、app server或PC上)。初始化。ora具有DD-MON-YYYY设置
那么,在服务器上使用java代码时,是什么让NLS_DATE_格式不同呢
# 1 楼答案
据我所知,JDBC驱动程序将根据Java的系统属性
user.locale
设置的内容调整NLS设置因此,应用服务器的区域设置和lokal PC之间很可能存在差异
# 2 楼答案
在看不到任何代码的情况下,很难说发生了什么,但您根本不应该依赖数据库日期格式。您应该将日期/时间戳值作为对象获取,然后可以根据需要对其进行格式化。从根本上说,你不是在存储字符串,而是在存储日期或时间戳。一个我可能会自然而然地写为“1976年6月19日”的日期可能会被其他人写为“1976年6月19日”——但两者都代表同一个日期
这就像询问数据库是否使用十六进制或十进制来存储整数:这两者都不做,因为我们应该注意:它存储整数本身。将数字视为数字,将日期视为日期,将时间戳视为时间戳等,当您想向用户显示某个内容时,请为该用户选择最合适的格式