2

イベントを開催できる場所があります。方法が欲しいのですがupcoming_events、誰かが夜の午後10時を見ると、今日のイベントが表示されるように切り捨てたいと思います。私はこれを持っています:

def upcoming_events
  d=Time.new
  d.strftime("%m-%d-%Y")
  l=Event.where('location_id=? and start_datetime>?',self.id, d)
end

私は正しく変換されd.strftimeますが、クエリは次のとおりです。

SELECT `events`.* FROM `events` WHERE (location_id=301 and start_datetime>'2012-06-20 02:49:23')

'2012-06-20'を実行する方法はありますか?

4

2 に答える 2

6

呼び出しは、オブジェクトをまったくstrftime変更しないため、ここでは基本的に何もしません。d

いずれにせよ、Rails は on (および & ) のメソッドを提供しており、beginning_of_dayまさにDateTimeあなたDateTime望むことを実行します。

d = Time.now        #=> 2012-06-19 23:05:54 -0400
d.beginning_of_day  #=> 2012-06-19 00:00:00 -0400

したがって、コードを次のように変更してください。

Event.where('location_id=? and start_datetime>?', self.id, d.beginning_of_day)
于 2012-06-20T03:05:12.973 に答える
1

あなたが望んでいたので、あなたは実際には"%Y-%m-%d"悪徳を意味していたと思います。そのため、次のことを試してください。"%m-%d-%Y"'2012-06-20'

def upcoming_events
  d=Time.new
  l=Event.where('location_id=? and start_datetime>?', self.id, d.strftime("%Y-%m-%d"))
end
于 2012-06-20T03:11:30.437 に答える