我想在我的应用程序的数据库中捕获合同的条款。我使用带有轨道3的postgres。术语是合同的持续时间。输入的一些例子可以是5年,3年半,或2年3个月。我通常希望能够捕获数年和数月的持续时间。我应该使用什么数据类型来执行此操作?
答案 0 :(得分:4)
Postgresql支持interval
数据类型。
http://www.postgresql.org/docs/9.1/static/datatype-datetime.html
答案 1 :(得分:2)
我认为您只需捕获月份(作为整数),或者有2个单独的字段。一年多一个月。您可以将月份实施为下拉菜单,以便只有0到11是可接受的值。
最后一个选项是使用日期时间,它比你想要的更精确,所以我不建议这样做。
答案 2 :(得分:2)
我会使用两个日期时间属性,start_date和end_date,这样你以后可以决定如何以任何你想要的方式表达合同条款,年/月,日,分,秒,无论你想要什么。
您可以定义一个名为term的伪属性,即
class Contract < ActiveRecord::Base
def term
return self.end_date - self.start_date
end
end
术语以秒为单位,您可以做一些简单的数学运算并返回月,年和月等。您也可以使用DateHelper,即
distance_of_time_in_words(@contract.start_date,@contract.end_date)
将打印一个近似字符串,如“1年”或“3年”,“约1年”等。