我有一個奇怪的現象:爲什麼我不能將java.util.Date與mysql日期進行比較?
我使用JPA /休眠從MySQL數據庫表,其中一個日期列是大於或等於我發送的日期得到行(去掉了不相關的代碼):
SELECT sp.* FROM spaceproduct sp where sp.enddate is null or sp.enddate >= :endDate)
在我的代碼我基本上做到:
q.setParameter("endDate", new java.util.Date());
現在,我的問題是,當在DB的日期是同一天。即「今天」,它不會被拾起。我認爲這是因爲它不知何故也將java.util.date的時間部分與數據庫中的內容進行比較(db值僅爲「2011-10-28」,但java.util Date爲2011-10-28T13:36 :43.130 + 0200)
不過,如果我更改日期參數i設置成java.sql.Date(),它的工作原理
。現在,因爲我的MySQL數據庫列是一個日期,而不是!一個日期時間,這是一個錯誤?即使我發送一個java.util.date,不應該只比較日期部分,因爲我的數據庫列是日期嗎?
編輯:我試過使用util日期並將其轉換爲一個sql日期,但實際上並不起作用:
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
q.setParameter("endDate", sqlDate);
因此,從我所看到的,我有的部分時間設置爲0,也爲SQL的日期,除非我用的是過時「年 - 月 - 日」構造...
不,這不是一個錯誤。 2011-10-28不是> = 2011-10-28T13:36:43.130 + 0200。你的日期對象有2011-10-28T13:36:43.130 + 0200,因此失敗。然而,java.sql.Date只存儲日/月/年,或者只是在你調用toString()時返回,所以它等於2011-10-28。 – Thor84no
嘿,感謝您的輸入。看到我上面的編輯評論,並說出你認爲隊友 – Mathias