【问题标题】:Ruby on Rails - Get rid of milliseconds on Active record t.timestamps columnsRuby on Rails - 消除活动记录 t.timestamps 列上的毫秒数
【发布时间】:2014-05-12 21:01:41
【问题描述】:

我创建了一个phrases 表,默认情况下ActiveRecord 添加了两列:created_atupdated_at

class CreatePhrases < ActiveRecord::Migration
  def change
    create_table :phrases do |t|
      t.string :phrase
      t.string :emotion
      t.string :category

      t.timestamps
    end
  end
end

我正在共享此数据库,updated_at 列值当前如下所示:

2014-03-12 20:53:26.846635

我需要删除此列的毫秒数。更新记录时自动创建的每个值应如下所示:

2014-03-12 20:53:26

如何减少此列的毫秒数?

【问题讨论】:

    标签: ruby-on-rails ruby postgresql activerecord timestamp


    【解决方案1】:

    这只是为了输出目的吗?如果是这样,您可能只是考虑覆盖输出方法。在你看来是这样的——

    def created_at
      read_attribute(:created_at).strftime("%Y-%m-%d %H:%M:%S")
    end
    
    def updated_at
      read_attribute(:updated_at).strftime("%Y-%m-%d %H:%M:%S")
    end
    

    然后将其放入关注点并在您的模型中分享。

    【讨论】:

    • 好主意,但实际上这个数据库正在被共享,并且数据正在被移植到另一个 SQL 数据库中。无论在另一端使用何种形式的 SQL,都需要时间戳来切断毫秒。现在提出的解决方案是将我的 Postgres 时间戳转换为 varchar(23),然后强制转换为日期时间......它变得非常糟糕,如果我能从我的数据库中消除毫秒会更好。
    • 是的,可以转换为时间戳。但是,如果您的数据集足够大,遍历所有表中的所有记录并进行转换可能会很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    相关资源
    最近更新 更多