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