में डेटटाइम का मिलीसेकंद रिज़ॉल्यूशन मेरे पास 2012-01-01T01:02:03.456
जैसी स्ट्रिंग है जो मैं ActiveRecord का उपयोग कर पोस्टग्रेस डेटाबेस TIMESTAMP में संग्रहीत कर रहा हूं।रूबी
दुर्भाग्य से, रूबी मिलीसेकेंड बंद काटना लगता है:
ruby-1.9.3-rc1 :078 > '2012-12-31T01:01:01.232323+3'.to_datetime
=> Mon, 31 Dec 2012 01:01:01 +0300
Postgrs माइक्रोसेकंड संकल्प का समर्थन करता है। मैं अपना टाइमस्टैम्प तदनुसार सहेजने के लिए कैसे प्राप्त कर सकता हूं? मुझे कम से कम मिलीसेकंद संकल्प की आवश्यकता है।
(पी एस हाँ मैं postgres में एक मिलीसेकेंड पूर्णांक स्तंभ में हैक कर सकता है; हार ActiveRecord का पूरा उद्देश्य उस तरह।)
अद्यतन:
बहुत मददगार प्रतिक्रियाओं से पता चला है रूबी के DateTime
नहीं है कि मिलीसेकंड बंद करना; #to_f
का उपयोग करके यह दिखाता है। लेकिन, कर रहा है:
m.happened_at = '2012-01-01T00:00:00.32323'.to_datetime
m.save!
m.reload
m.happened_at.to_f
मिलीसेकंड छोड़ देता है।
अब दिलचस्प बात यह है कि created_at
रेल और पोस्टग्रेस दोनों में मिलीसेकंड दिखाता है। लेकिन अन्य टाइमस्टैम्प फ़ील्ड (जैसे happened_at
ऊपर) नहीं। (संभवतः created_at
के लिए रेल्स NOW()
फ़ंक्शन का उपयोग करता है क्योंकि डेटटाइम में गुजरने के विपरीत)।
जो मेरे अंतिम प्रश्न की ओर जाता है:
टाइमस्टैम्प फ़ील्ड पर मिलीसेकंद रिज़ॉल्यूशन को संरक्षित करने के लिए मैं ActiveRecord कैसे प्राप्त कर सकता हूं?
पुष्टि की, इसे डेटाटाइम के बजाए स्ट्रिंग के रूप में सहेजना आंशिक सेकंड को संरक्षित करता है। –
ध्यान दें कि 'DateTime.now.to_s' आंशिक सेकंड वापस नहीं करता है। मैंने 'DateTime.now.iso8601 (6) 'का उपयोग किया। –
यह मुद्दा पागल है, मैंने अभी इस पर दो घंटे खो दिए हैं। उत्तर के लिए Thx। – sidney