[Ruby-On-Rails] रेल सक्रिय ActiveRecord तिथि के बीच


Answers

मैं व्यक्तिगत रूप से इसे और अधिक पठनीय और पुनः उपयोग करने योग्य बनाने के लिए एक दायरा बनाउंगा:

आप टिप्पणी.आरबी में, आप एक दायरा परिभाषित कर सकते हैं:

scope :created_between, lambda {|start_date, end_date| where("created_at >= ? AND created_at <= ?", start_date, end_date )}

फिर के बीच बनाई गई क्वेरी के लिए:

@comment.created_between(1.year.ago, Time.now)

आशा करता हूँ की ये काम करेगा।

Question

मुझे एक दिन में किए गए टिप्पणियों की पूछताछ करने की ज़रूरत है। क्षेत्र मानक टाइमस्टैम्प का हिस्सा है, बनाया गया है। चयनित तिथि date_select से आ रही है। मैं ऐसा करने के लिए ActiveRecord का उपयोग कैसे कर सकता हूं?

मुझे कुछ चाहिए:

"SELECT * FROM comments WHERE created_at BETWEEN '2010-02-03 00:00:00' AND '2010-02-03 23:59:59'"



मैंने यह कोड देखने के लिए चलाया कि क्या चेक किया गया जवाब काम करता है, और इसे सही करने के लिए तिथियों के चारों ओर स्वैप करने का प्रयास करना पड़ा। यह काम किया -

Day.where(:reference_date => 3.months.ago..Time.now).count
#=> 721

यदि आप सोच रहे हैं कि उत्पादन 36 होना चाहिए था, तो इस पर विचार करें, महोदय, 3 दिन से 3 दिन कितने दिन हैं?




Comment.find(:all, :conditions =>["date(created_at) BETWEEN ? AND ? ", '2011-11-01','2011-11-15'])



कई तरीके हैं। आप इस विधि का उपयोग कर सकते हैं:

start = @selected_date.beginning_of_day
end = @selected_date.end_of_day
@comments = Comment.where("DATE(created_at) BETWEEN ? AND ?", start, end)

या यह:

@comments = Comment.where(:created_at => @selected_date.beginning_of_day..@selected_date.end_of_day)



यदि आप केवल एक दिन प्राप्त करना चाहते हैं तो यह इस तरह से आसान होगा:

Comment.all(:conditions => ["date(created_at) = ?", some_date])



Links