Java 如何在sql查询中的where条件中为日期字段使用setParameter;日期如:今天;使用hibernate

Java 如何在sql查询中的where条件中为日期字段使用setParameter;日期如:今天;使用hibernate,java,sql,hibernate,Java,Sql,Hibernate,在使用hibernate的sql查询中,我尝试使用“punchDate like:date1”实现where条件时遇到问题。谁能告诉我实现它的正确语法是什么 String sql=select * from PunchHistory whered punchDate like :date1; String date="2017-10-23"; List<PunchHistory> results =session.createQuery(StackperksConstants.sql

在使用hibernate的sql查询中,我尝试使用“punchDate like:date1”实现where条件时遇到问题。谁能告诉我实现它的正确语法是什么

String sql=select * from PunchHistory whered punchDate like :date1;
String date="2017-10-23";
List<PunchHistory> results =session.createQuery(StackperksConstants.sql)
                    .setDate("date1", java.sql.Date.valueOf(date))
                    .list();
String sql=select*from PunchHistory其中punchDate类似于:date1;
字符串日期=“2017-10-23”;
列表结果=session.createQuery(StackperksConstants.sql)
.setDate(“date1”,java.sql.Date.valueOf(Date))
.list();
谁能帮帮我吗。
提前感谢

Like
与字符串一起使用,而您必须将
=
与日期一起使用:

String sql="select * from PunchHistory where punchDate = :date1"
//-----------------------------------------------------^
List<PunchHistory> results = 
                 session.createQuery(StackperksConstants.sql)
                 .setParameter("date1", java.sql.Date.valueOf(date), TemporalType.TIMESTAM)
//Instead you can use -----^
                 .list();
String sql=“从PunchHistory中选择*,其中punchDate=:date1”
//-----------------------------------------------------^
列表结果=
createQuery(StackperksConstants.sql)
.setParameter(“date1”,java.sql.Date.valueOf(Date),TemporalType.TIMESTAM)
//相反,你可以使用-----^
.list();

更好的方法是使用
setParameter()
方法,例如:

session.createQuery(sql,Class.class).setPrameter(0,date,TemporalType.TIMESTAMP).list();
你知道“在哪里”吗?