我试图将Calendar
与JPA2进行比较。查询如下所示:
TypedQuery<X> q = em.createQuery("select r from Record r where r.calendar= :calendar", X.class);
Calendar c = foo(); // setting fields and stuff
q.setParameter("calendar", c);
然而,这是比较日期+时间。我想知道MM:DD:YYYY是否相等,而不关心时间。在JPA2中有没有好的方法来做到这一点,或者我必须创建一个本地查询?
我试着把HH:MM:SS:...设置为零,然后再保存到数据库中,但我不知道这是否是非常明智的,关于时区和夏令时和东西。
6条答案
按热度按时间lvmkulzt1#
使用Oracle数据库时,可以在JPQL查询中使用
trunc
函数,例如:另请参见https://cirovladimir.wordpress.com/2015/05/18/jpa-trunc-date-in-jpql-query-oracle/
ajsxfq5m2#
我不得不在where子句上使用date_trunc:
aelbi1ox3#
在Hibernate 6及更高版本中,可以使用
date_trunc(text, timestamp)
更精确地截断时间戳,例如:date_trunc('hour', timestamp)
将时间戳截断到小时(没有分钟和秒)。liwlm1x94#
可以将TemporalType.DATE传递给setParameter方法以截断日期+时间。
vc6uscn95#
在JPQL的规范中没有提到允许这样做的DateTime函数,但是您总是可以欺骗并这样做
flseospp6#
Mysql和H2兼容的日期比较忽略时间部分: