我正在使用mysql数据库,列类型是日期。
为什么我使用参数String解析为Date却找不到结果。
当我使用“ new Date()”可以找到结果时。
道:
Session session = sessionFactory.getCurrentSession();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<vo> query = builder.createQuery(vo.class);
Root<vo> root = query.from(vo.class);
query.select(root).where(builder.equal(root.get("id"), id), builder.equal(root.get("querydate"), queryDate));
vo result = session.createQuery(query).getSingleResult();
主要:
String qdate = "20190514";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date queryDate = sdf.parse(qdate);
// this can't find result!
vo data = dao.queryByIdAndDate("SwnZMgFsE52J", queryDate);
// this can find result!
vo data = dao.queryByIdAndDate("SwnZMgFsE52J", new Date());
答案 0 :(得分:0)
首先,我建议将Java类的首字母大写。建议这样做。因此,您的问题与日期格式和db接受的格式不匹配有关。尝试使用以下格式的日期:yyyy-MM-dd。 所以在您的主要尝试:
String qdate = "2019-05-14";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date queryDate = sdf.parse(qdate);
vo data = dao.queryByIdAndDate("SwnZMgFsE52J", queryDate);