1

現在、Joda DateTime (Datetime+TimeZone) 値をデータベースに保存しています。

私がやりたいことは、UTC 時間ではなく、ユーザーのタイムゾーンに基づいて 24 時間のレコードを取得することです。IEタイムゾーンがGMTの人は00:00GMT-24:00GMT、タイムゾーンがPSTの人は00:00PST-24:00PSTの間のレコードを取得したい。

明らかに、HQL は DateTime.toDateTime(toZone) 変換を実行しないため、HQL クエリでこれを実行できるとは思いません。groovy/grailsでこの種の範囲検索を実行することは可能ですか?

4

1 に答える 1

1

これについてもう少し考えてみたところ、解決策は別の方法で攻撃することかもしれません。toDateTime(zone) を hibernate レベルで実行しようとする代わりに、より高いレベルで実行してください。つまり、start->end 検索条件の作成時に実行してください。

    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));
    }
于 2010-03-24T17:22:59.500 に答える