我对时区和 postgresql 数据库(Rails 3.0.4、PostgreSQL 9.0)有疑问。我正在使用自定义范围,我在其中附加了一些条件,进行连接 etc.pp。
问题是,Rails 不会将时间转换为我当地的时区。这是范围的代码:
scope :with_activities_within_range_in_week, lambda{ |latMin, lngMin, latMax, lngMax, date|
select("date_trunc('day', activities.starting_at) as date,
count(activities.id) as value
") \
.within(latMin, lngMin, latMax, lngMax) \
.joins(:activities) \
.merge(Activity.in_week(date)) \
.group("date") \
.order("date")
}
within 方法检查范围,Activity.in_week 范围返回:
where("activities.starting_at >= ? AND activities.starting_at < ?", start, stop)
在 select 语句中,我想将starting_at 字段截断为一天。
我得到日期字段的以下输出:
2011-04-07 18:48:32
2011-04-02 14:07:20
2011-04-02 14:06:49
不幸的是,它不包括时区。当我尝试通过“普通”Rails 函数访问我的模型时,它可以工作:
puts Activity.first.starting_at
-> 2011-04-15 06:47:55 +0200
我做错了什么?希望有人能帮忙!
谢谢,晚礼服