Ruby on rails 如何解决;PG::CannotImprove:错误:无法将类型bigint强制转换为带有时区的时间戳;Rails中的错误

Ruby on rails 如何解决;PG::CannotImprove:错误:无法将类型bigint强制转换为带有时区的时间戳;Rails中的错误,ruby-on-rails,ruby,postgresql,group-by,ruby-on-rails-5,Ruby On Rails,Ruby,Postgresql,Group By,Ruby On Rails 5,我想按月显示我的销售指数,我已经尝试使用filter或groupdate gem,但我遇到了这个错误 PG::CannotImprove:错误:无法将类型bigint强制转换为时间戳 时区线1:。。。空)分组依据(日期(“月份”), (“销售”。“id”::timestam。。。 ^:从“销售”中选择“销售”。*其中(“销售”。“id”不为空)组 在时区的(日期(“月”)之前(“销售”,“id”::timestamptz) “亚洲/曼谷”),位于时区“亚洲/曼谷” 我也试图删除时区,但我得到了这

我想按月显示我的销售指数,我已经尝试使用filter或groupdate gem,但我遇到了这个错误

PG::CannotImprove:错误:无法将类型bigint强制转换为时间戳 时区线1:。。。空)分组依据(日期(“月份”), (“销售”。“id”::timestam。。。 ^:从“销售”中选择“销售”。*其中(“销售”。“id”不为空)组 在时区的(日期(“月”)之前(“销售”,“id”::timestamptz) “亚洲/曼谷”),位于时区“亚洲/曼谷”

我也试图删除时区,但我得到了这样的错误

“时区[]的参数无效::已在处创建”

错误:


源代码:

首先,这一行似乎有一个错误:

@sales = Sale.group_by_month(:id, :created_at,format: "%B %Y", time_zone: "Hanoi")
请看以下示例:

第一个参数(
id
)过多,您的代码应该如下所示:

@sales = Sale.group_by_month(:created_at, format: "%B %Y", time_zone: "Hanoi")
这就是为什么实际上您会收到错误消息“PG::cannotimprove:error:cannotcast type bigint to timestamp with timezone…”。
“sales”。“id”::在生成的SQL查询中,timestamp tz
意味着将
id
列(整数)转换为timestamp(timestamp)

我希望这会有帮助

@sales = Sale.group_by_month(:id, :created_at,format: "%B %Y", time_zone: "Hanoi")
User.group_by_week(:created_at, time_zone: "Pacific Time (US & Canada)")
@sales = Sale.group_by_month(:created_at, format: "%B %Y", time_zone: "Hanoi")