我在mysql表中保留了一个名为
的列starts_at
我的专栏每次都可以使用不同的时区。
我尝试过创建迁移:
def self.up
create_table :meetings, id: false, force: true do |t|
t.string :id
t.timestamp :starts_at
end
end
但我总是以
结束日期时间
列类型
我想强制rails使用timestamp
,并使用尝试了所有这些但没有成功:
def up
change_column :meetings, :starts_at, :timestamp
end
这样:
def up
change_column :meetings, :starts_at, 'timestamp'
end
和此:
def self.up
create_table :meetings, id: false, force: true do |t|
t.string :id
t.column :starts_at, 'timestamp'
end
end
任何想法?
更新
我想将时区保存在数据库记录上,而不是保存在 应用程序配置
答案 0 :(得分:0)
Rails实际上会为您做出一些决定。 $dataProvider = new ActiveDataProvider([
'query' => Article::findBySql($myQuery)->all(),
'pagination' => [
'pageSize' => 10,
],
'sort' => [
........
],
]);
和:timestamp
都默认为:datetime
,而DATETIME
和:date
分别对应:time
和DATE
。< / p>
使用Rails,您只需决定是否需要存储日期,时间或两者。
因此,您可以在TIME
列中使用:datetime
类型。
答案 1 :(得分:0)
在config / application.rb
中查看此示例class Application < Rails::Application
config.time_zone = 'Sydney'
config.time_zone = 'Kuala Lumpur'
config.active_record.default_timezone = 'Kuala Lumpur'
end
您可以根据需要设置时区,然后将其设置为动态。
以下是所有时区ActiveSupport::TimeZone.all.map(&:name)