这是在一个群里讨论的问题。
方法很多:如果说数据库中数据的存储是用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 args17 */18 public static void main(String[] args) {19 // TODO Auto-generated method stub20 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 }
自信的生命最美丽!