如何使用Hibernate从MySQL获取当前日期数据列表?

时间:2018-12-29 14:49:04

标签: mysql hibernate

public <E> List viewc(String a,String c) {      
        List l1=new ArrayList();
        try {
            con = utilimpl.openSession();
            if(con != null)
            {
              st =  con.beginTransaction();
               Query q=con.createQuery("FROM "+a+"  WHERE cdate="+c+"");
                l1=q.list();
               st.commit();
              }
            else
            {
                System.out.println("no connection found!!");
            }

        } catch (HibernateException e) {
            e.printStackTrace();
            if(st != null)
            { 
                st.rollback();
            }
        }
        return l1;

        }

下面的代码是servlet的doget方法代码。我想获取数据列表。cdate是我的数据库的列,数据类型是mysql中的时间戳。

   SimpleDateFormat k=new SimpleDateFormat("yyyy-MM-dd");
    Date s=new Date();
    String c=k.format(s);       
    List<userModel> ln=d.viewc("userModel",c);
    request.setAttribute("list",ln);

1 个答案:

答案 0 :(得分:0)

由于cdate是时间戳类型,因此它由日期+时间组成,因此您试图仅比较相等的日期部分。

尝试这样的事情:

Query q=con.createQuery("FROM "+a+"  WHERE DATE(cdate)=DATE("+c+")");

编辑:为了进行比较,c和cdate的值应采用相同的格式。为此,可以对查询进行如下修改:

Query q=con.createQuery("FROM "+a+"  WHERE DATE_FORMAT(DATE(cdate),'%Y-%m-%d')="+c);

此处c的格式应为:“ yyyy-mm-dd”,例如“ 2019-01-19”

DATE_FORMAT会将结果日期转换为所需的字符串值格式,现在与'c'的比较应该很好。