我尝试从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。
在我看来,日期格式是正确的,我不会理解这个错误。
答案 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();