1

我想在我的应用程序的数据库中捕获合同条款。我正在使用带有rails 3的postgres。期限是合同的期限。输入的一些示例可能是 5 年、3 年半或 2 年 3 个月。我通常希望能够以年和月为单位捕捉持续时间。我应该使用什么数据类型来做到这一点?

4

3 回答 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 回答