【发布时间】:2013-08-04 07:40:57
【问题描述】:
我的用户表如下:
- birhtMonth: int
- dayOfBirthday: int
- 入职日期:日期
要求:我想获得未来 6 个月内所有即将到来的生日和雇用日期(此处不包括日/月年),考虑到当前月份的日期应该大于今天,所以这就是我所做的:
@Query("from User u where ( (u.birthMonth in (8,9,10,11,12,1)) or (month(u.hireDate) in (8,9,10,11,12,1)) ) and u.company = :company")
这会在接下来的六个月内获得所有即将到来的生日和雇用日期,但它会在当天之前和之后的几天内获得本月的生日和雇用日期,并且它应该只获得结果>当天并忽略结果
示例:
-
今天的日期是 2013 年 8 月 3 日,如果有birthMonth=8 和 dayOfBirth=3 或 2 或 1 的生日,则应忽略它,只考虑当月的 dayOfBirth > 3,如果有类似 hirDate 的情况:
- 2011-08-01
- 2012-08-02
- 2012-08-03
它们也应该被忽略,请告知如何在 sql 或 hql 中解决这个问题。
【问题讨论】:
-
答案取决于数据库引擎。请指定您的。
-
我是第二个。引擎之间的日期函数非常不同,这就是我们将使用的。