2010-06-25 10 views
6

मैं अपने नियंत्रक में निम्न कोड का उपयोग कर रहा:Heroku Postgres त्रुटि - ऑपरेटर समयक्षेत्र रहित टाइमस्टैम्प मौजूद नहीं है = पूर्णांक

@monday = (Time.now).at_beginning_of_week 

    @friday = 5.days.since(@monday)-1.second 

    @sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday]) 

हालांकि यह अपने स्थानीय SQLite पर ठीक काम करता है, मैं एक "ऑपरेटर मौजूद नहीं है है टाइमज़ैम्प के बिना टाइमस्टैम्प = पूर्णांक "त्रुटि।

मुझे बिल्कुल स्पष्ट नहीं है कि क्या बदला जाए।

विचार?

धन्यवाद।

उत्तर

7

आपके पैरामीटर @monday और @friday गलत हैं, इन्हें "समय क्षेत्र के बिना टाइमस्टैम्प" होना चाहिए, लेकिन पूर्णांक के रूप में बनाए गए हैं, त्रुटिपूर्णता देखें। SQLite में कोई डेटाटाइम-डेटाटाइप नहीं है, इसलिए दिनांक टेक्स्ट या पूर्णांक (यूनिक्स-टाइमस्टैम्प) के रूप में संग्रहीत होते हैं। यही कारण है कि आपको SQLite में कोई त्रुटि नहीं मिलती है।

सुनिश्चित करें कि आप '2004-10-19 10:23:54' जैसे टाइमस्टैम्प बनाएं और आप ठीक होंगे।

@sent_emails = ContactEmail.all(:conditions => ['date_sent >= to_timestamp(?) and date_sent <= to_timestamp(?)', @monday, @friday]) 
+0

जो आप की सिफारिश करेंगे: एक अन्य विकल्प PostgreSQL-समारोह to_timestamp() एक टाइमस्टैम्प करने के लिए अपने यूनिक्स टाइमस्टैम्प कन्वर्ट करने के लिए हो सकता है? पोस्टग्रेज़ में कनवर्ट करना या @monday और @friday के लिए सही प्रारूप बनाना? अगर उत्तरार्द्ध, कैसे, मैंने समय के लिए रूबी defs देखा ... स्पष्ट नहीं है कि मैं क्या करूँगा ... धन्यवाद! – Angela

+0

सही प्रारूप का उपयोग करें, अब आप चीजों को गति देने के लिए इस कॉलम पर एक साधारण अनुक्रमणिका का उपयोग भी कर सकते हैं। –

संबंधित मुद्दे