Hibernate HQL查询错误:将varchar数据类型转换为smalldatetime

时间:2018-04-26 06:14:25

标签: sql-server hibernate hql

我尝试从Hibernate HQL查询获得结果:

来自StopsRegister的

,其中s.startTime&gt; ='2018-04-25 07:59:00.0'和s.endTime&lt; ='2018-04-26 07:59:00.0' < / p> 来自StopsRegister的

,其中s.startTime介于'2018-04-25 08:42:00'和'2018-04-26 08:42:00'

当添加一个有效日期时,问题就出现了:和s.endTime&lt; ='2018-04-26 07:59:00.0'只有一个值,一切正常。

但是得到SQL错误:

将varchar数据类型转换为smalldatetime数据类型会导致超出范围的值。

这就是我获取日期值的方式:

Timestamp.valueOf(LocalDateTime.of(toDatePicker.getDate(), toTimePicker.getTime()));

数据类型是:java.sql.Timestamp; 数据库:MS SQL Server。

在我看来,日期格式是正确的,我不会理解这个错误。

1 个答案:

答案 0 :(得分:0)

解决问题:

Session session = HibernateUtil.getSessionFactory().openSession();
        Query q = session.createQuery("from StopsRegister s where s.startTime >= :from and s.startTime <= :to");
        q.setTimestamp("from", from);
        q.setTimestamp("to", to);
        stopRegisterList = (ArrayList<StopsRegister>) q.list();