我需要在PosgreSQL中存储时间inverval。数据将来自Ruby on Rails。
Say,PizzaHut从9:00到18:00接受订单。
我创建了以下迁移:
class AddOrderTimeAndDeliveryTimeToMerchants < ActiveRecord::Migration
def self.up
add_column :merchants, :order_time, :interval
end
我已阅读documentation,现在有以下代码:
Merchant.create( :delivery_time => "9:00 18:00" )
当我执行它时,我收到以下错误消息:
PGError: ERROR: invalid input syntax for type interval: "9:00 18:00"
如何正确地做到这一点?
答案 0 :(得分:4)
我不认为间隔确实是你想要的。间隔表示没有任何特定终点的时间跨度;例如,您将时间间隔添加到现有时间以获得另一个时间。在两个不同的时间你会更好:
add_column :merchants, :order_from, :time, :null => false
add_column :merchants, :order_to, :time, :null => false
然后,如果由于某种原因您需要知道他们打开交付的时间,您可以通过从:order_from
中减去:order_to
来构建间隔。
如果你真的必须使用间隔,那么你需要构造一个像这样的值:
:delivery_time => "interval '11 hour'"
请注意,这说明间隔不是从 A 到 B 的特定时间范围,它只是某个特定长度的时间范围(没有指定的结束)点)。
答案 1 :(得分:0)
你可能想要一个没有时区的时间,因为如果纽约的Domino在当地时间9:00开放,加州的Domino也在当地时间9:00开放,那么带有时区的时间将无法正常工作
你可能想要的是两件事之一。开始和结束时间的两倍,或开始时间和间隔。我建议两次,但选择权归你的。请注意,您可以通过从另一个中减去一个来间隔两次。
select '09:00:00'::time - '05:00:00'::time;
?column?
----------
04:00:00