我有一个包含时间戳的postgres数据库。此时间戳遵循ISO标准,如下所示:
2017-08-28 20:14:45.684926+00
我使用ActiveRecord从Ruby / Sinatra环境访问数据库,但返回的是ISO8601。
有没有办法强制格式化为ISO而不是ISO8601?
我想避免在收到数据后解析数据。
现在,我正在使用命令:
class ApiResponse < ActiveRecord::Base
class << self
def send_query(user, params)
limit = params.include?('limit') ? params['limit'] : 50
where_params = {
userid: user,
allowed_intent: true
}
ApiResponse.select([:id, :ts, :userid, :intent, :response])
.where(where_params)
.order(ts: :desc)
.limit(limit).to_a
end
end
ApiResponse类用于通过ActiveRecord访问数据库,它工作正常。但格式不正确。它显示:
2017-08-29T05:58:44.488Z
而不是
2017-08-28 20:14:45.684926+00
此格式ISO是db
中的格式知道如何在ActiveRecord调用中按预期正确格式化时间戳?
答案 0 :(得分:0)
我认为这里存在一些误解:
Postgres使用ISO 8601进行输出(所谓的ISO,它们没有不同的标准)https://www.postgresql.org/docs/9.6/static/datatype-datetime.html
我认为ActiveRecord会返回DateTime
类或类似内容的实例,而不是该格式的字符串。
您看到的只是用于显示的格式;您可以使用strftime
以其他格式显示数据。