我想在應用程序的數據庫中捕捉合同的期限。我正在用rails 3使用postgres。這個術語是合約的持續時間。一些投入的例子可以是5年,3年半或2年3個月。我通常希望能夠在幾年和幾個月內捕捉持續時間。我應該使用哪種數據類型來執行此操作?什麼Rails Active Record Migration數據類型用於合同的持續時間?
1
A
回答
2
我認爲你只需要捕捉月份(作爲一個整數),或者有2個獨立的字段。每年一個月。您可以將幾個月實施爲下拉菜單,以便只有0到11是可接受的值。
最後一個選擇是使用datetime,它比你想要的要精確得多,所以我不會爲此推薦它。
2
我會使用兩種日期時間屬性start_date和end_date,這樣您可以稍後決定如何以任何想要的方式表示合同的期限,年/月,日,分,秒,無論您想要什麼。
您可以定義名詞叫做僞屬性,即
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 year' 或「3年, '約1年' 等
4
PostgreSQL支持一個interval
數據類型。
http://www.postgresql.org/docs/9.1/static/datatype-datetime.html
相關問題
- 1. 帶Rails/Active Record的時間數據
- 2. Ruby/Rails - Active Record Db遷移到MySQL - 時間戳類型?
- 3. Rails Active Record TimeZones
- 4. rename_column and change_column in one for active record migration
- 5. Active Record/Rails 3.2/PostgreSQL數據庫加入模型中屬性的數據類型
- 6. Rails 5 Active Record has_and_belongs_to_many
- 7. Active Record Rails查詢
- 8. attr_accessible in rails Active Record
- 9. Active Record Validation Rails 4
- 10. Rails Active Record回撥
- 11. Ruby on Rails和Active Record獨立腳本不同意數據庫值:時間戳
- 12. Codeigniter Active Record - 來自時間戳的時間大於
- 13. 在Rails schema/Active Record中使用「BIGINT UNSIGNED」
- 14. 從模型獲取更改的數據 - Active Record 5/Rails
- 15. 笨的Active Record返回類型
- 16. 什麼數據類型應該用於DynamoDB中的時間戳?
- 17. 這個Active Record行有什麼問題?
- 18. Rails Active Record`group`:爲什麼這隻返回幾列?
- 19. 用於XML Schema/XACML持續時間類型的JodaTime
- 20. Database Arnostic'或'Query in Rails 4.2 Active Record
- 21. Active Record如何從Rails中的數據庫檢索數據?
- 22. 哪種數據類型最適合描述歌曲的持續時間?
- 23. Rails 4 Active Record finder方法
- 24. Howto在Active Record Migration中創建隨機默認值
- 25. Rails:爲什麼時間數據類型在1/1/2000開始
- 26. Rails Active Record - counter_cache僅返回給定時間段的記錄
- 27. 需要Rails/Active Record多態關聯嗎?
- 28. Active Record .where.find_each
- 29. BrightCove視頻持續時間數據類型
- 30. MySQL存儲持續時間 - 數據類型?
datetime不是時間間隔。如果您使用日期時間,則需要另一個字段來創建時間範圍。 –