आपको प्लेसहोल्डर का उपयोग करना चाहिए सही प्रारूप प्राप्त करने और यह सुनिश्चित करने के लिए कि यह ठीक से उद्धृत किया गया है:
t = Time.new
events = Event.where("datetime < :t", :t => t)
आप किसी timestamp
की तुलना नहीं कर सकते हैं PostgreSQL में एक पूर्णांक के साथ कॉलम लेकिन आप SQLite में कर सकते हैं। आपको अपने timestamp
. की तुलना करनी होगी दूसरे timestamp
के साथ (या date
) या एक स्ट्रिंग जिसे timestamp
. के रूप में पार्स किया जा सकता है . यह SQL काम नहीं करेगा:
SELECT "events".* FROM "events" WHERE (datetime < 132462148)
लेकिन ये करेंगे:
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23 06:52:25.096869')
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23')
यहां कई पाठ हैं:
- यदि आप हरोकू में परिनियोजन करने जा रहे हैं, तो आपको PostgreSQL के शीर्ष पर भी विकास करना शुरू कर देना चाहिए, ActiveRecord आपको विभिन्न डेटाबेस के बीच सभी अंतरों से अलग नहीं करेगा।
- आपको ActiveRecord को जितना संभव हो सके प्रकार रूपांतरण मुद्दों के बारे में चिंता करने देना चाहिए, यदि आप किसी दिनांक या समय के विरुद्ध तुलना कर रहे हैं, तो प्लेसहोल्डर का उपयोग करें और AR को किसी प्रकार की टाइम ऑब्जेक्ट सौंपें और AR को इसके बारे में चिंता करने दें।ली>
- जहां भी संभव हो स्ट्रिंग इंटरपोलेशन के बजाय प्लेसहोल्डर का उपयोग करें।