<query name="user.by.date">
FROM User as u
where u.Date between subdate(now(), interval 3 day) and now()
如果错了,我该如何改变? 哪里可以看到hql支持哪些函数? NOW()和CURRENT_DATE()之间有什么区别? 是否可以在NOW()
中使用CURRENT_DATE()答案 0 :(得分:3)
我建议你不要在你的HQL中使用像subdate()和now()这样的特定于数据库的函数,因为HQL用于使应用程序数据库独立。你应该计算 java中的 subdate(now(),interval 3 day)和 now(),并将这两个值作为参数传递给此查询,因为在JAVA中很容易做到,最后你的查询将如下所示。
<query name="user.by.date">
FROM User as u
where u.Date between :prevdate and :currentdate</query>
其中 prevdate 相当于 subdate(now(),interval 3 day), currentdate 相当于 now( ),两者都要从JAVA代码中计算和传递,因此它更容易,而且更多地超过数据库。
关于 now()与 current_date()之间的区别,现在为您提供日期和时间 current_date 仅为您提供输出日期。在mysql中尝试以下。
立即(): - &GT; 强>
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2014-11-19 22:38:15 |
+---------------------+
current_date() - &gt;
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2014-11-19 |
+----------------+