【发布时间】:2016-08-23 21:03:58
【问题描述】:
我有一个表 sessions,其中包含一个日期时间字段 starts_at。 starts_at 存储在 UTC 中,但是我想在本地时间返回按starts_at 排序的会话,并且只是作为时间而不是日期时间。
所以如果我的会话日期时间为:
s1 Jan 1, 13:00
s2 Jan 2, 11:00
s3 Jan 1, 23:00
如果不考虑时区,我希望它们按以下顺序返回:s2, s1, s3。
现在我想获取本地时间的所有 utc 时间,因为可以说有效的时区为 utc 增加了 2 小时。 s2, s1, s3 的顺序现在是错误的。我们想要 s3、s2、s1。
我一直在尝试的是:
Session.order("CONVERT_TZ(starts_at,'UTC', '#{tz}')")
和
Session.order("TIME(CONVERT_TZ(starts_at,'UTC', '#{tz}'))")
tz = Time.now.strftime('%Z') 的位置(在此之前,我还将 Time.now.zone 设置为所有会话将在其中进行的时区)
不幸的是,这给了我一些奇怪的结果,似乎没有任何顺序。
【问题讨论】:
标签: mysql ruby-on-rails ruby timezone