PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

रेल समयक्षेत्र परिवर्तित नहीं करता है (PostgreSQL)

आपका डेटाबेस यूटीसी में आपके टाइमस्टैम्प को संग्रहीत कर रहा है (जैसा कि इसे करना चाहिए)। ActiveRecord टाइमज़ोन समायोजन कर रहा है जब यह जानता है कि इसमें टाइमस्टैम्प है; इसलिए, जब आप यह कहते हैं:

puts Activity.first.starting_at

एआर जानता है कि starting_at एक टाइमस्टैम्प है इसलिए यह टाइमस्टैम्प को ActiveSupport::TimeWithZone के रूप में इंस्टेंट करता है। उदाहरण और वह वर्ग टाइमज़ोन समायोजन लागू करता है। लेकिन, जब आप यह कहते हैं:

select("date_trunc('day', activities.starting_at) as date ...

AR यह पता लगाने के लिए SQL को पार्स नहीं करेगा कि date_trunc टाइमस्टैम्प लौटाएगा, एआर को यह भी नहीं पता कि date_trunc . क्या है साधन। एआर डेटाबेस से बाहर आने वाली एक स्ट्रिंग को देखेगा और यह बिना किसी व्याख्या के आपको सौंप देगा। आप उस स्ट्रिंग को ActiveSupport::TimeWithZone . पर फीड करने के लिए स्वतंत्र हैं (या आपकी पसंदीदा टाइम हैंडलिंग क्लास) स्वयं:एआर को ऐसी बातें बताने में कुछ भी गलत नहीं है जो वह अपने आप नहीं जानता और न ही जान सकता है।

रेल चालाक है लेकिन यह जादू नहीं है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django ORM में क्वेरी द्वारा समूहीकृत पर एक एनोटेट फ़ील्ड के अधिकतम योग की गणना करें?

  2. PostgreSQL फ़ंक्शन शून्य लौट रहा है

  3. PostgreSQL के साथ नेस्टेड JSONB सरणियों के अंदर की वस्तुओं को हटाएं

  4. रेक कार्य डेटाबेस.yml कॉन्फ़िगरेशन को अनदेखा करते प्रतीत होते हैं

  5. मैं PostgreSQL तालिका में पंक्तियों की गिनती कैसे तेज करूं?