将日期分配给命名的SQL参数时,Hibernate会自动将其转换为GMT时间。如何使所有日期都使用当前服务器时区?
假设您有一个查询:
Query q = session.createQuery("from Table where date_field < :now"); q.setDate("now", new java.util.Date());
“现在”将设置为GMT时间,而“新Date()”将获取您当前的服务器时间。
谢谢。
事实证明,Hibernate不会自动将日期转换为格林尼治标准时间,如果您使用query.setDate(),它只会缩短时间,因此,如果您传递“ 2009-01-16 12:13:14”,它将变为“ 2009-01-16 00:00” :00“。
query.setDate()
为了节省时间,您需要query.setTimestamp("date", dateObj)改用。
query.setTimestamp("date", dateObj)