這是在一個群裡討論的問題。
方法很多:如果說數據庫中數據的存儲是用date類型的話,改怎麼做,如果說做數據遷移的話又該怎麼做?
最終的討論方案在用字符串存儲格式上比較好,畢竟各個數據庫對時間的存儲存在差異。
一下是我用hibernate中的HQL,和QBC兩種檢索方式對一段時間內的數據進行檢索。
1 package com.duduli.li; 2 3 import java.util.Date; 4 import java.util.Iterator; 5 import java.util.List; 6 7 import org.hibernate.Criteria; 8 import org.hibernate.Session; 9 import org.hibernate.Transaction; 10 import org.hibernate.criterion.Criterion; 11 import org.hibernate.criterion.Expression; 12 13 public class Select { 14 15 /** 16 * @param args 17 */ 18 public static void main(String[] args) { 19 // TODO Auto-generated method stub 20 Session session = HibernateSessionFactory.getSession(); 21 Transaction tran = session.beginTransaction(); 22 /* 23 * 采用HQL的方式, 24 Date begin = java.sql.Date.valueOf("2009-03-24"); 25 Date end = java.sql.Date.valueOf("2009-03-26"); 26 List<A> result = session.createQuery("from A a where a.date > :beginTime and a.date <= :endTime").setTimestamp("beginTime", begin).setTimestamp("endTime", end).list(); 27 for(A a : result){ 28 System.out.println(a.getId()); 29 System.out.println(a.getTitle()); 30 System.out.println(a.getDate()); 31 } 32 */ 33 34 // 采用QBC的方式。 35 Date begin = java.sql.Date.valueOf("2009-3-24"); 36 Date end = java.sql.Date.valueOf("2009-3-26"); 37 Criteria criteria = session.createCriteria(AbstractA.class); 38 Criterion creterion = Expression.between("date", begin, end); 39 List<A> result = criteria.add(creterion).list(); 40 for(A a : result){ 41 System.out.println(a.getId()); 42 System.out.println(a.getTitle()); 43 System.out.println(a.getDate()); 44 } 45 } 46 }