簡體   English   中英

日期轉換格式Java轉DB不同格式

[英]Date conversion format Java to DB different format

我正在 java 中編寫代碼,該代碼執行 Oracle 數據庫程序當我運行數據庫時,我必須在程序中放入的格式是 dd/MM/yyyy。 我必須從我的 java 代碼中使用帶有日期 yyyy-MM-dd 的 CallebleStatement setDate 發送此日期(這是 java 中的日期格式)當執行此 CallebleStatement 時,它會將我發送的日期轉換為數據庫格式,還是會寫入 Java 格式?

編輯:基本上是這樣的:

if(types[1].compareTo("DATE") == 0) {//procedureValues[i] = yyyy-MM-dd HH:mm:ss
    cs.setDate(i+1, Date.valueOf(procedureValues[i].trim()));
}else {
    cs.setObject(i+1, procedureValues[i].trim(), SQLTypes.valueOf(types[1]).getTypes());    
}

是的,程序需要 DATE 格式

在 Oracle 中, DATE是由 7 個字節(世紀、世紀、月、日、小時、分鍾和秒)組成的二進制數據類型。 總是有這些組件,它從不存儲格式。

執行此 CallebleStatement 時,它會將我發送的日期轉換為數據庫格式,還是寫入 Java 格式?

如果您使用CallableStatement.setDate() ,它會將其轉換為數據庫所需的二進制值。 不會以(容易)人類可讀的格式存儲它。

如果您想查看數據庫如何存儲值,則可以使用:

SELECT DUMP(your_date_column) FROM your_table;

當您從數據庫中讀取值時,客戶端應用程序(在本例中為 Java 通過數據庫驅動程序)將從數據庫中讀取二進制值並將其轉換為適合客戶端應用程序的表示形式。

如果您在不同的客戶端應用程序中讀取它,那么二進制值將被轉換為該客戶端應用程序的適當表示; 因此兩個不同的客戶端應用程序(例如,Java 和 SQL/Plus)可能會以不同的格式顯示相同的二進制日期值。

如果您使用的 Java 中的日期格式與數據庫的日期格式不兼容,則該過程將失敗,因為該過程采用dd/mm/yyyy字符串而不是日期實例。

您必須確保您的 Java 日期類型是正確的,或者將其轉換為與 Oracle 日期類型dd/mm/yyyy匹配,然后將其用作過程中的參數。

一個簡單的解決方案是在 Java 中使用字符串而不是日期類型,並將該字符串用作過程的參數,但這取決於您的輸入和程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM