我有一个大查询,它收集了一组模型,我需要按以下方式格式化时间戳:YYYY-MM-DDTHH:MI:SS.MSZ
所以,我的查询如下:
models.select("(to_char(created_at, 'YYYY-MM-DD') || 'T' || to_char(created_at, 'HH24:MI:SS.MSZ')) AS created_at").as_json
但是,当我得到结果时,我仍然得到created_at
字段作为DateTime对象。
不过,如果我用其他内容重命名该字段,例如AS something_else
,那么我就有了我所需的格式。
如何解决问题,以便以我的格式返回created_at,而不会遍历整个集合,并格式化每个模型?
更新
我使用的数据库是PostreSQL
我将此行为追溯到ActiveSupport :: JSON :: Encoder。我使用gem activesupport-json_encoder
因为我需要设置ActiveSupport.encode_big_decimal_as_string = false
,而自Rails 4.1以来它们默认编码为字符串。
现在,此编码器将created_at
和updated_at
字段编码为ActiveSupport :: TimeWithZone。
我可以以某种方式摆脱后者吗?