Jodatime groovy / grails daterange搜索TimeZone转换

时间:2010-03-24 15:25:19

标签: grails groovy jodatime

我目前正在将Joda DateTime(Datetime + TimeZone)值存储到数据库中。

我想要做的是根据用户的时区而不是UTC时间获取24小时的记录。 I.E.我希望在00:00GMT-24:00GMT之间获取时区为GMT的人和00:00PST-24:00PST的时区为PST的记录。

现在我不认为我可以在HQL查询中执行此操作,因为显然HQL不会为我执行DateTime.toDateTime(toZone)转换。那么有可能在groovy / grails中执行这种范围搜索吗?

1 个答案:

答案 0 :(得分:1)

我想到了这一点,解决方案可能是以另一种方式攻击它。而不是尝试在休眠级别执行toDateTime(区域),而是在更高级别执行 - 即创建start->结束搜索条件;

    DateTimeZone toZone = DateTimeZone.forID("Europe/London");
    DateTime now = new DateTime()
    DateTime today = new DateTime(now.year, now.monthOfYear, now.dayOfMonth, 0, 0, 0, 0)
    DateTime yesterday = today.minusDays(1)

    def queryStr = "from JODATesting j where j.thedate > :date1 and j.thedate < :date2"
    for (JODATesting joda: JODATesting.executeQuery(queryStr, [date1: yesterday, date2: today]) ) {
        println("##### Joda"+joda.id +"=" +joda.thedate.toDateTime(toZone));
    }