2011-05-22 65 views
1

JDBC的格式錯誤,我試圖讀取從我的數據庫中的幾個日期,但在某些情況下,我收到了「爲DATE java.sql.SQLException中的格式錯誤」。這裏是我的代碼:爲DATE

Date entryDateD = res.getDate("entryDate"); 

在調試模式下我看到entryDateD「1996年9月15日」的內容,是在我的數據庫.. 雖然我就不得不提一下,我從閱讀其他日期太我注意到我的數據庫格式爲'xxxx-0y-zz'。我想說的是,如果月份小於10,那麼在它前面添加一個零,在這種情況下不添加。我懷疑這可能與它有關。 如果其表示爲java.util.Date(這種零不會出現在數據庫本身雖然不是隻有在這個日期,但在任何日期) thanx提前:)

+1

刺在黑暗中,但什麼MySQL的列類型是entryDate?默認情況下,日期列將生成yyyy-mm-dd格式,因此缺少的零使我相信列類型可能是varchar或數據庫級別的其他非日期類型。 – virtualeyes 2011-05-22 15:32:28

+0

omg youre其實是對的! thanx這麼多! 以及它使得它看起來像一個非常愚蠢的問題,但現在它保留我給了它每隔輸入satanicaly工作! 該死的你墨菲定律! – jaivalis 2011-05-22 15:34:41

+0

形成你的評論作爲答案,所以我可以接受它,如果你想:) – jaivalis 2011-05-22 15:38:51

回答

2

只是一個猜測,但什麼的MySQL列類型你對entryDate?

默認情況下在MySQL日期類型將產生一個YYYY-MM - dd格式;缺少的零使我相信在DB級別列類型可能是varchar或其他非日期類型。

這可能是在Java級別您的問題的原因...

2

,你必須讓JDBC驅動程序而煩惱的優勢關於處理數據庫的任何格式問題。

至於它是如何在你的顯示器呈現的,這是給你和你的java.text.DateFormat類的使用。

您在應用程序中將日期表示爲java.util.Date來做正確的事情,但您需要了解格式與該類型是分開的問題。

+0

哦,不,這不是這樣做。 – duffymo 2011-05-22 16:20:18

0

Java有一個子類java.util.Date的,稱爲java.sql.Date

創建一個Java SQL日期是最簡單的方法通過用Utility Date調用構造函數。

java.util.Date uDate = res.getDate("entryDate"); 
java.sql.Date sDate = new java.sql.Date(uDate.getTime()); 
0

如果你想獲得res.getDate("entryDate")YYYY-MM-DD,那麼你需要轉換爲日期查詢這樣的:

SELECT 
... 
CAST(entryDate as DATE)as entryDate, 
... 
FROM your_table; 

如果你覺得這是有幫助的,然後做給予好評使其對其他人有用。