hibernate - 需要帮助通过今天的日期查询数据库,而忽略时间

标签 hibernate grails jodatime

我有一个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的DAYMONTHYEAR功能效果很好。您可以在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/

相关文章:

hibernate - 将原生 SQL 查询的结果映射到 Grails 域类

java - 为什么这个@JsonIgnore 修复了我的无限循环?

java - java swing 中的 Hibernate 和库 sql cp30

java - Hibernate 验证从集合中删除的集合成员

ajax - Grails Ajax 渲染列表操作

grails - Bamboo 上的Grails 3

java - 是否有任何单行 java 命令使用 joda 来获取一年中的秒数?

java - 乔达时代打印

javascript - 如何使用 js-joda 将任何 ISO8601 字符串转换为 LocalTime?

java - 了解为 Join 表上的一对多和多对一生成的查询