我正在使用SQL Server數據庫和Hibernate。我有相關的存儲日期如下問題:休眠日期映射問題
我有以下代碼:
String hql = "select user from User user where user.createDate = :date";
Query query = HibernateUtil.getSession().createQuery(hql);
Date date2 = DateHelper.getEndOfDay(new Date());//this returns 2010-07-27 23:59:59.999
query.setParameter("date", date2);
當我比較日期2010-07-27 23:59:59.999
我得到的是有日期的結果:2010-07-28 00:00:00.0
。使用setDate()而不是setParameter()會返回保存日期在同一天的用戶,這意味着小時,分鐘等被丟棄。
hibernate將日期映射到java.util.Date,但在結果列表中,一切都是Timestamp,我猜是因爲Timestamp擴展了java.util.Date。 爲了在比較平等時取得好成績,你會建議做什麼?
setDate()不好,因爲它讓我回到所有在同一天的日期的用戶,這意味着小時和秒等被丟棄。 – Atticus 2010-07-27 11:46:31
但時間戳應該沒問題(如果你得到毫秒FR你的日期)。 (+1) – Bozho 2010-07-27 12:08:04
在你的問題中,你提到了幾次「日期」,所以我不確定你的意思是「日期」還是「日期/時間」,並且都包含在我的答案中。 – 2010-07-27 12:20:21