0

私はこのRailsの世界に慣れていないので、間違いが明白すぎる場合は申し訳ありません。

検索フォームを作成しています。文字列を比較することができました。しかし、私は日付に苦労しています。

これは次の形式です。

= select_datetime Date.today, :prefix => :search_start_date

これは私が試しているクエリです(注:イベントの有効な列のstart_date)

 @events = @events.where("start_date > ?", "%#{params[:search_start_date]}%")

1つは日付で、もう1つは日時なので、キャストする必要がありました。しかし、私が試したことは何もうまくいきませんでした。

助言がありますか?ありがとう

4

3 に答える 3

1

パラメータを Time オブジェクトに入れることができます:

@time = Time.new(params[:search_start_date][:year], params[:search_start_date][:month],params[:search_start_date][:day] , params[:search_start_date][:hour], params[:search_start_date][:minute])
@events = Event.where("start_date > ?", @time)

それはうまくいくはずです。ただし、日時型で start_date を設定する必要があります。実際、日付が 2012 年 4 月 17 日のイベントがあり、2012 年 4 月 17 日 9:00 以降に開始された @event を探している場合、そのイベントは表示されません。4月18日以降のイベントのみ表示されます。

于 2012-04-17T08:56:46.897 に答える
0

parse を使用してみてください:

 @events = @events.where("start_date > ?", "%#{Date.parse(params[:search_start_date])}%") if !params[:search_start_date].nil?
于 2012-04-17T10:24:42.667 に答える
0

これを試すと、より良い結果が得られますか

 @time = params[:search_start_date]+" "+"00:00:00"

 @events = @events.where("start_date > ?", @time)

試してみると、00:00:00 を超える時間で結果が得られます

于 2012-04-17T08:42:27.757 に答える