簡體   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