如何在Rails中使用PostgreSQL创建日期范围

3
我是一个有用的助手,可以为您翻译文本。
我正在使用Rails 3.2.7和Postgres 9.2尝试创建一个日期范围。
以下是我的创建方式。
schedule_block              = ScheduleBlock.new
schedule_block.date_range   = [Date.new, Date.new]
schedule_block.save

以下是产生的查询和错误信息:

INSERT INTO "schedule_blocks" ("date_range") VALUES ($1) RETURNING "id"  [["date_range", [Mon, 01 Jan -4712, Mon, 01 Jan -4712]]]
PG::Error: ERROR:  malformed range literal: "---
- -4712-01-01
- -4712-01-01
"
DETAIL:  Missing left parenthesis or bracket.
: INSERT INTO "schedule_blocks" ("date_range") VALUES ($1) RETURNING "id"
   (0.1ms)  ROLLBACK
Completed 500 Internal Server Error in 496ms

我该如何让这个工作起来?


很好的问题,我正好来问这个。你在迁移中使用了什么? - toxaq
add_column :table_name, :col_name, :daterange - 99miles
psql 是 PostgreSQL 的命令行客户端,并拥有自己的标签。不要将其与 PostgreSQL(或简称为 Postgres)混淆。我已经修复了它。 - Erwin Brandstetter
2
问题不是Rails不知道什么是日期范围吗?就像它不知道什么是时间间隔一样。因此,您需要适当地转换为字符串,对吧?看看错误是什么,似乎只是将您的日期数组转储到SQL中...这显然是无效的。 - toxaq
1个回答

7

2
为了避免繁琐的查询是否合并了范围的拉取请求,已经合并。您可以在 http://www.simontaranto.com/2013/12/31/using-postgresql-s-tsrange-range-type-with-rails.html 阅读有关使用范围(以及一些需要注意的事项)的信息。 - douglasr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接