我有一个奇怪的情况:
我正在使用jpa / hibernate从mySql数据库表中获取行,其中日期列大于或等于我发送的日期(删除了不相关的代码):
SELECT sp.* FROM spaceproduct sp where sp.enddate is null or sp.enddate >= :endDate)
在我的代码中,我基本上是这样做的:
q.setParameter("endDate", new java.util.Date());
现在,我的问题是数据库中的日期是同一日期.即“今天”,它不会被捡起.我认为这是因为它以某种方式还将java.util.date的时间部分与数据库中的内容进行了比较(db值仅是“ 2011-10-28”,而java.util日期是2011-10-28T13:36 :43.130 0200)
但是,如果我将我设置的date参数更改为java.sql.Date(),它将起作用!
现在,假设mySql DB列是Date,而不是DateTime,这不是bug吗?即使我发送了java.util.date,它也不应该只比较日期部分,因为我的DB列是日期吗?
编辑:我尝试使用util-date并将其转换为sql-date.这实际上也不起作用:
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
q.setParameter("endDate", sqlDate);
因此,从我可以看到的角度来看,对于sql-dates,我也必须将时间部分设置为0,除非我使用了不建议使用的“ year-month-date”构造函数…