【问题标题】:Factory_girl_rails and postgres date format?Factory_girl_rails 和 postgres 日期格式?
【发布时间】:2011-11-20 05:25:46
【问题描述】:

如何格式化日期以将其放入 factory_girl_rails 工厂,例如:

Factory.define(:profile) do |t|
  t.length 110
  t.shipdate 1993-04-06
end

如果重要的话,我使用的是 postgresql 和 factory_girl_rails 1.0。我得到的错误是ActiveRecord::StatementInvalid: PGError: ERROR: invalid input syntax for type date: "1982" Rails 版本是 3.1

【问题讨论】:

    标签: postgresql date ruby-on-rails-3.1 factory-bot rails-postgresql


    【解决方案1】:

    您缺少日期字符串周围的引号:

    Factory.define(:profile) do |t|
      t.length 110
      t.shipdate '1993-04-06'
    end
    

    1993 减 4 是 1989,1989 减 6 是 1983。你确定你复制的错误信息正确吗?

    【讨论】:

    • @siggy_lxvi:我们用“暂时对显而易见的事情视而不见”怎么样?
    【解决方案2】:

    错误消息告诉我们,您尝试将字符串'1982' 写入日期字段,这显然是无效的。日期也需要一个月和一天。

    如果你一直有这种输入,你可以用to_date() 处理它,这很有意义:

    SELECT to_date('1982', 'YYYY-MM-DD')
    

    结果:

    1982-01-01
    

    有几个settings that influence processing of date/time values,最重要的是DateStyle。不过,to_date() 的显式转换是独立工作的。

    【讨论】:

    • 1982 年不是我想要通过的日期。日期的格式与 t.shipdate 1993-04-06 中显示的一样,这实际上与您的理论答案 1982-01-01 相同,并且错误,因为我仍然收到错误消息。
    • @siggy_lxvi:错误信息非常明确:您正试图在某个时候传递“1982”。
    猜你喜欢
    • 2011-07-01
    • 2016-09-03
    • 1970-01-01
    • 2015-11-03
    • 2020-07-04
    • 2012-01-14
    • 2022-06-28
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多