gpt4 book ai didi

java - 数据类型 datetime 和 time 在大于或等于运算符中不兼容

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:01 24 4
gpt4 key购买 nike

我在数据库表的列中有一个变量类型时间。我如何将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com