我在数据库表的列中有一个变量类型时间。 我如何将 java 中的这个值与这个字段进行比较我的意思是我可以使用日期,gregoriancalendar? 我已经试过了,我仍然有这个消息,请有人给我一个建议
Date d2 = new Date(); // timestamp now
Calendar cal = Calendar.getInstance(); // get calendar instance
cal.setTime(d2); // set cal to date
cal.set(Calendar.HOUR_OF_DAY, 10); // set hour to midnight
cal.set(Calendar.MINUTE, 30); // set minute in hour
cal.set(Calendar.SECOND, 0); // set second in minute
cal.set(Calendar.MILLISECOND, 0); // set millis in second
Date d3 = cal.getTime();
@SuppressWarnings("unchecked")
List<Asistencia> list = (List<Asistencia>) sessionFactory
.getCurrentSession()
.createQuery(
"select new Asistencia( asis.idAsistencia,"
+ "asis.horaInicio, asis.horaFin) "
+ "from Asistencia asis "
+ "where :hour >= asis.horaInicio and :hour <= asis.horaFin")
.setParameter("hour", d3).list();
我也用过
where :hour between asis.horaInicio and asis.horaFin
消息是一样的:
ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - The data types datetime and time are incompatible in the greater than or equal to operator.
数据类型 datetime 和 time 在大于或等于运算符中不兼容。
这里是 Asistencia 类:
public class Asistencia implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private long idAsistencia;
private Date horaInicio;
private Date horaFin;
private int idAula;
private int idCurso;
private int idPeriodo;
private Date fecha;
public Asistencia (){
}
public Asistencia (long idAsistencia, Date horaInicio, Date horaFin){
this.idAsistencia
this.horaInicio = horaInicio;
this.horaFin = horaFin;
}
最佳答案
似乎唯一的问题是我使用的是 SQL Server 2008,并且有必要在连接属性中设置 sendTimeAsDateTime=false。
这里有一个类似的问题。 comparing time in sql server through hibernate
关于java - 数据类型 datetime 和 time 在大于或等于运算符中不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22817540/