標準のPost.first.created_at
datetimeがあるとします。次のようなことをして、2009-06-03 16:57:45.608000 -04:00
形式の日時と直接比較できますか?
Post.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
編集:両方のフィールドはdatetimes、datesではないです。
はい、比較演算子を使用して日付を比較できます。例:
irb(main):018:0> yesterday = Date.new(2009,6,13)
=> #<Date: 4909991/2,0,2299161>
irb(main):019:0> Date.today > yesterday
=> true
しかし、日付と日付時刻を比較しようとしていますか?
その場合は、日時を日付に変換してから比較を行います。
これがお役に立てば幸いです。
はい、created_at
ActiveRecordの日付/時刻フィールドの値を通常のDateTime
オブジェクト(所有する文字列の解析を取得できるオブジェクトなど)と直接比較できます。
プロジェクトでは、created_at datetimeオブジェクトを持つValueオブジェクトがあります:
iMac:trunk luca$ script/console
Loading development environment (Rails 2.3.2)
>> Value.first.created_at
=> Fri, 12 Jun 2009 08:00:45 CEST 02:00
>> Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> Wed Jun 03 22:57:45 0200 2009
>> Value.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> true
Created_atフィールドは次のように定義されます:
create_table "values", :force => true do |t|
[...]
t.datetime "created_at"
end
N.B.フィールドが日付ではなく日付である場合は、時間に変換する必要があります。
Post.first.created_at.to_time > Time.parse("2009-06-03 16:57:45.608000 -04:00")
または日付を解析します:
Post.first.created_at > Date.parse("2009-06-03 16:57:45.608000 -04:00")
それ以外の場合は、次を取得します。
ArgumentError: comparison of Date with Time failed