问题描述
问题:
我的Java sprig-batch作业在开发环境中运行良好,但是当我将其部署在集成服务器上时,却遇到了date-formatting问题。这使我认为我的开发人员之间存在配置差异。环境和集成服务器。
上下文:
我不是Java或Spring专家。这是一个integration问题。
我调用了MY.PROCEDURE
段PL / SQL代码,该代码又调用了Oracle视图。
Oracle视图中的以下指令在我的开发中可以正常工作。环境,但是在集成服务器上会引起问题:
T1.DATE between '01.07.2015' and '07.07.2020'
丑陋
Caused by: java.sql.SQLDataException: ORA-01843: not a valid month ORA-06512: at "MY.PROCEDURE",line 36
当我用TO_DATE
指定日期格式时,它消失了。我知道这是个好习惯,显然对于我们的团队来说应该是强制性的。无论如何,我想了解Dev和Int之间的配置差异。
帮助
有什么想法在部署此东西时应该在哪里配置语言环境?
我希望我可以在本地设置本地(或日期格式),而无需修改Java可交付结果。有可能吗?
解决方法
您的NLS_DATE_FORMAT似乎在您的环境中有所不同。在每种环境中运行以下命令:
select value
from nls_session_parameters
where parameter = 'NLS_DATE_FORMAT';
这就是为什么您应该始终指定格式而不依赖于隐式转换的原因。如有必要,您可以运行以下命令:
alter session set nls_data_format = 'mm.dd.yyyy';
或应该是“ dd.mm.yyyy”。从给定的信息无法确定。
,开发与集成服务器之间的环境差异首先是Swiss(FR)设置操作系统。而且...该服务器是具有默认英语版本的Linux。
所以您开始看到我要去的地方。
告诉Java您使用'fr'
语言环境运行自己的东西:
我必须使用以下命令完成java命令行:
-Duser.country=fr -Duser.language=fr
在这里我找到了灵感:NLS_LANG setting for JDBC thin driver?(最受好评的答案)。