繁体   English   中英

由于环境的变化 java new date() function 以“DD-MON-YYYY HH:MM:SS”格式提供日期。 但只需要 'DD-MON-YYYY' 格式

[英]Due to change in environment java new date() function is giving date in 'DD-MON-YYYY HH:MM:SS' format. but only 'DD-MON-YYYY' format is expected

最近我们将java代码从AWS环境迁移到OCI环境。 下面是给出问题的代码。

sql.addSQLToWhereClause(XXXTable, "? between table1.start_date and table1.end_date")
            .addSQLToWhereClause(YYYTable, "table1.ORG_ID = ? ")
            .addSQLToWhereClause(XXXTable, "table1.LANG_CODE = ? ")
            .bind(new Date())
            .bind(ConstValues.ORG_ID)
            .bind(locale.toString().toUpperCase());

在 AWS 环境中它工作正常,但在 OCI 环境中我们得到错误:ORA-01830: date format picture ends before converting entire input string

我们收到此错误是因为.bind(new Date()) 将“07-JAN-2021 10:49:04”放入第一个参数中。 但预期值为 '07-JAN-2021'

请建议为什么要在当前日期提供此附加信息,以及我们如何在不更改 java 代码的情况下将其删除。

谢谢拉胡尔

Object Java 的java.util.Date class 实例总是包含时间部分。 为什么它在 AWS 上的行为会有所不同……——不知道!

但我假设bind(java.util.Date)的实现在这些环境中是不同的,因为Date.toString()的实现将带有与问题中显示的完全不同的 output 。

因此,请检查提供相应 class 的库的版本。

最近我们将 java 代码从 AWS 环境迁移到 OCI 环境。 下面是给出问题的代码。

sql.addSQLToWhereClause(XXXTable, "? between table1.start_date and table1.end_date")
            .addSQLToWhereClause(YYYTable, "table1.ORG_ID = ? ")
            .addSQLToWhereClause(XXXTable, "table1.LANG_CODE = ? ")
            .bind(new Date())
            .bind(ConstValues.ORG_ID)
            .bind(locale.toString().toUpperCase());

在 AWS 环境中它工作正常,但在 OCI 环境中我们收到错误:ORA-01830:日期格式图片在转换整个输入字符串之前结束

我们收到此错误是因为 .bind(new Date()) 将 '07-JAN-2021 10:49:04' 放在第一个参数中。 但预期值为 '07-JAN-2021'

请说明为什么此附加信息会在当前日期出现,以及我们如何在不更改 java 代码的情况下将其删除。

谢谢拉胡尔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM