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);
答案 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'的比较应该很好。