G S*_*mha 12 postgresql timezone ruby-on-rails utc
我有一个适用于postgres db 的rails应用程序.我有一个名为UserTimings的模型,其中有两个字段from_time和to_time.
t.time "from_time"
t.time "to_time"
Run Code Online (Sandbox Code Playgroud)
我预计时间将以完整的UTC格式存储,并带有时区信息.过了一会儿,我意识到数据库有这种SQL查询来创建表.
from_time time without time zone,
to_time time without time zone,
Run Code Online (Sandbox Code Playgroud)
我不想要这个.我想用时区存储.我希望UTC时间里有+0530的东西,我还没想到rails应用程序已被配置为处理它.请告诉我如何编写迁移以强制db使用时区.
谢谢.
Dim*_*tri 14
迁移完全符合您的要求
class CreatePeppers < ActiveRecord::Migration
def change
create_table :peppers do |t|
t.column :runs, 'timestamp with time zone'
t.column :stops, 'time with time zone'
end
end
end
Run Code Online (Sandbox Code Playgroud)
类型供您选择.你可以在这里写任何类型,postgresql支持.但转换到类型可能存在问题,rails可以理解.
你似乎对这里的两件不同的事情感到困惑——都是常见的错误,几乎每个人都至少犯过其中一个错误。
首先,“带有时区信息的 UTC 格式”没有指定时间。它指定时间和地点。
其次,PostgreSQL 的“带时区的时间戳”实际上并不存储时区。它存储一个 UTC 时间戳,但它接受一个时区。更好的名称选择类似于“绝对时间”。您可以直接比较其中的两个值。
没有时区的时间戳实际上不会给你时间,除非你也有一个地方。除非您知道每个所在的时区,否则您无法比较其中的两个。
听起来你想要的是一个没有时区的时间戳和一个单独的时区。这样你就可以说“伦敦时间星期二下午 2 点”。
| 归档时间: |
|
| 查看次数: |
13110 次 |
| 最近记录: |