2011-11-23 96 views
4

我有兩個Date將被分配給sql查詢中的某些變量(因爲我使用Hibernate)的Java對象,以便將它們與DateTime類型列進行比較以獲得行與指定的時間範圍,例如:使用SQL將數據庫表中的Java與DateTime列進行比較

WHERE event_date >= :startDate and event_date < :finishDate 

我不能比較日期爲datetime直接讓我想到了2個可能的解決方案:

  • 嘗試使用查詢最新活動日期字段轉換比較前的字段。
  • 或者嘗試轉換日期java對象爲datetime,我認爲也許是不可能的..

什麼你會建議我做什麼?

+1

」或者嘗試將日期java對象轉換爲dateTime,我認爲這可能不可行「 - 查看java.sql.Date –

回答

3

我猜你有問題,因爲您使用setDate(糾正我,如果我錯了)和setDate方法:

綁定日期(時間捨去)給定Date對象的到命名查詢參數。

使用setTimestamp而是結合了日期和時間給定Date對象的

java.util.Date startDate = … ; 
java.util.Date finishDate = … ; 
Query query = session.createQuery("from YourTable where event_date >= :startDate and event_date < :finishDate"); 
query.setTimestamp("startDate", startDate); 
query.setTimestamp("finishDate", finishDate); 

 
P.S .:一定要使用java.util.Date對象和java.sql.Date之一。 「

+0

感謝您的回覆,並且您對我的使用setDate是正確的。我試過這種方法,但返回的結果仍然沒有被過濾。 – Best

+0

你使用'java.util.Date'嗎?你能發佈你的代碼嗎? – Idolon

+0

是的,我使用java.util.Date。這是如何使用當前時間創建最終日期的示例:if(fDate!= null){ //調整最終日期 Calendar c = Calendar.getInstance(); c.setTime(fDate); c.add(Calendar.DAY_OF_YEAR,1); 日期fDate2 = c.getTime(); q.setDate(「fdate」,fDate2); \t \t \t \t \t} – Best

相關問題