返回列表 回复 发帖

日期查询问题

前段时间做项目,遇到oracle的时间问题头疼了2天,插入时间没有精确到秒,最后问题还是解决,但是什么原因还是不解。忽悠,忽悠社区,忽悠论坛.! X) h, L" _0 D8 i# t
oracle数据库时间字段为Date类型,Hibernate中映射字段类型为java.sql.Timestamp,PO中则为java.util.Date不变,忽悠社区是综合性社区网站,将最新、最快、最专业的资讯、新闻,图片,视频奉献给所有爱好者。% C1 F- @( K1 i6 ^6 A5 M1 T
插入时间用new java.sql.Date(new java.util.Date().getTime()),数据库插入的时间没有问题,但是取的时候时间后面却又多了个毫秒,而且值为0,不知何解,要是在重新格式化成String又显示成英文格式的时间。。。。
* F# l( v- X6 a0 e$ C* r忽悠,忽悠社区,忽悠论坛.最后不得已用<fmt:formatDate value="${}" type="both"/>解决了问题,原因不明!
6 V0 j4 ^1 q' V% ]7 V3 C) W5 m7 G
7 V7 m: N2 d7 w6 Y2 J) R( O$ j忽悠社区还有一点需要注意的是formbean上来的数据都是String型,会造成类型不匹配的异常,需要增加个get/set方法
  1. private String savedate;
  2. public String getSavedate() {
  3.   java.text.DateFormat dateFormat =new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  4.         return dateFormat.format(this.savedate);                 
  5. }

  6. public void setSavedate(String savedate) throws ParseException {
  7.   java.text.DateFormat dateFormat =new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  8.   this.createtime = dateFormat.parse(savedate);
  9. }
复制代码
createtime为需要转换的时间,这里简化了下。
0 o6 e/ E' m8 e) ]* T# Wwww.huuoo.com
- h3 ?( t2 R5 o, a" k9 F8 s0 X8 Lwww.huuoo.comDetachedCriteria时间查询
: i; x" Z$ h; ^) X8 [+ c忽悠社区action中:
  1. DetachedCriteria detachedCriteria = DetachedCriteria  .forClass(Log.class);   
  2.   
  3. String startTime = request.getParameter("startTime");   
  4.             String endTime = request.getParameter("endTime");   
  5.             if (startTime != null && endTime != null && startTime.length()>0 && endTime.length()>0) {   
  6.                if (Tools.isValidDate(startTime) && Tools.isValidDate(endTime)) {   
  7.                     if (Tools.before(startTime, endTime)) {   
  8.                        detachedCriteria.add(Restrictions.between("actTime",   
  9.                                 Tools.convertStringToDate(startTime), Tools   
  10.                                         .convertStringToDate(endTime)));   
  11.                     } else {   
  12.                         throw new RuntimeException("开始时间不能在结束时间之前!");   
  13.                     }   
  14.                 } else {   
  15.                     throw new RuntimeException("日志记录时间不符合规定的格式!");   
  16.                 }   
  17.             }   
  18. Page page = logService.listSearchLog(pageno, rowsize, orderby,   
  19.                     isReserve, detachedCriteria);   
复制代码
daoimp代码如下:
  1. public Page listSearchLog(final int pageno, final int rowsize,   
  2.             final String orderby, final boolean isReserve,   
  3.             final DetachedCriteria detachedCriteria)   
  4.             throws DataAccessException, HibernateException {   
  5.         return (Page) getHibernateTemplate().execute(new HibernateCallback() {   
  6.             public Object doInHibernate(Session session)   
  7.                     throws HibernateException {   
  8.                 Page page = null;   
  9.                 Criteria criteria = detachedCriteria   
  10.                         .getExecutableCriteria(session);   
  11.                 int total = ((Integer) criteria.setProjection(   
  12.                         Projections.rowCount()).uniqueResult()).intValue();   
  13.                 System.out.println("查询用户符合条件的数目为:" + total);   
  14.                 criteria.setProjection(null);   
  15.   
  16.                 if (total > 0) {   
  17.                     page = new Page();   
  18.                     page.setRowsize(rowsize);   
  19.                     page.setPageno(pageno);   
  20.                     page.setTotalrows(total);   
  21.                     page.excecute();   
  22.   
  23.                     Criteria result = criteria.setFirstResult(page.getStart())   
  24.                             .setMaxResults(page.getRowsize());   
  25.   
  26.                     if (orderby != null && orderby.length() > 0) {   
  27.                         if (isReserve) {   
  28.                             result = result.addOrder(Order.desc(orderby));   
  29.                         } else {   
  30.                             result = result.addOrder(Order.asc(orderby));   
  31.                         }   
  32.                     }   
  33.                     List resultList = new ArrayList();   
  34.                     Log log = null;   
  35.                     for (java.util.Iterator it = result.list().iterator(); it   
  36.                             .hasNext();) {   
  37.                         Object[] m = (Object[]) it.next();   
  38.                         if (m.length == 3) {   
  39.                             log = (Log) m[2];   
  40.                         }   
  41.                         if (m.length == 4)   
  42.                             log = (Log) m[3];   
  43.   
  44.                         resultList.add(log);   
  45.   
  46.                     }   
  47.                     page.setList(resultList);   
  48.   
  49.                 }   
  50.   
  51.                 if (page == null) {   
  52.                     page = Page.getEmptyPage();   
  53.                 }   
  54.                 return page;   
  55.             }   
  56.         }, true);   
  57.   
  58.     }  
复制代码
返回列表
高级回复 | 发新话题
B Color Image Link Quote Code Smilies
换一个