我有一个grails项目,该项目使用hibernate与postgres数据库进行通信。我正在使用joda时间插件。我一直在使用他们的DateTime
格式2013-01-25 22:28:55
来存储日期。我需要知道两个星期前什么时候发生了什么事,变量deadline
出现了。
import org.joda.time.DateTime
Collection<PerformanceReview> outstandingSelfEvaluations(DateTime deadline) {
Person.executeQuery("select pr from PerformanceReview as pr \
inner join pr.performanceReviewStatus as status \
where status.name in (:name) \
and pr.employeeEvaluation = null \
and pr.dateCreated = :deadline",
[name: ['Open', 'New'], deadline: deadline])
}
主功能
def incompleteSelfEvaluations(Integer days) {
def deadline = LocalDate.now().minusDays(days)
def performanceEvaluations = outstandingSelfEvaluations(deadline)
performanceEvaluations.each { PerformanceReview pr ->
sendSelfEvaluationReminderEmail(pr, evaluationDeadline)
}
}
唯一的问题是,我不知道如何忽略时间只检查日期。
编辑:添加了所有相关代码,并删除了对于此特定问题无用的错误消息
最佳答案
看起来似乎有些杂音,但是使用Hibernate的DAY
,MONTH
和YEAR
功能效果很好。您可以在documentation中找到有关这些功能的更多信息。这样,您不必担心会传递其他信息,而且它与数据库无关。
Collection<PerformanceReview> outstandingSelfEvaluations(LocalDate deadline) {
Person.executeQuery("select pr from PerformanceReview as pr \
inner join pr.performanceReviewStatus as status \
where status.name in (:name) \
and pr.employeeEvaluation = null \
and DAY(pr.dateCreated) = DAY(:deadline)
and MONTH(pr.dateCreated) = MONTH(:deadline)
and YEAR(pr.dateCreated) = YEAR(:deadline)",
[name: ['Open', 'New'], deadline: deadline])
关于hibernate - 需要帮助通过今天的日期查询数据库,而忽略时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21684112/