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

क्या रेल डिफ़ॉल्ट टाइमस्टैम्प को Y-m-d H:i:s (Y-m-d H:i:s.u के बजाय) में बदलने का कोई तरीका है या लार्वा Y-m-d H:i:s.u के दशमलव भाग को अनदेखा करता है?

रेल पक्ष में समाधान

ऐसा लगता है कि रेल (5.2) में प्रयुक्त ActiveRecord स्वचालित रूप से created_at को बचाने में दशमलव सेकंड को 1 मिसे तक जोड़ देता है और updated_at या डीबी में कोई अन्य टाइमस्टैम्प कॉलम जो उप-सेकंड स्वीकार करता है, जैसा कि फ़ाइल में परिभाषित किया गया है active_record/connection_adapters/abstract/quoting.rb

एक कामकाज यह है। इस लाइन को किसी भी फाइल में शीर्ष स्तर पर जोड़ें, जिसे किसी मॉडल (जैसे, ApplicationRecord मॉडल फ़ाइल) तक पहुँचने पर हमेशा रेल द्वारा पढ़ा जाएगा।

Time::DATE_FORMATS[:db] = '%Y-%m-%d %H:%M:%S.000000000'

module ActiveRecord::ConnectionAdapters::Quoting
  alias_method :quoted_date_orig, :quoted_date if ! self.method_defined?(:quoted_date_orig)

  def quoted_date(*rest, **kwd)
    quoted = quoted_date_orig(*rest, **kwd)
    quoted.sub(/(\.\d*)\.\d{6}$/, '\1')
  end
end

एक नया रिकॉर्ड बनाने के बाद, आप रेल कंसोल से इसकी पुष्टि कर सकते हैं,

MyModel.last.created_at.nsec  # => 0

या इसे देखने के लिए सीधे DB तक पहुंचें।

चेतावनी

यह परिवर्तन न केवल created_at . को प्रभावित करता है और updated_at लेकिन डीबी में अन्य सभी टाइमस्टैम्प कॉलम भी। मुझे लगता है कि आप अभी भी अपने मॉडल उदाहरण के लिए एक समय उदाहरण के विपरीत स्ट्रिंग सेट करके इस तरह के कॉलम में एमएसईसी (या एनएसईसी) परिशुद्धता के लिए एक मान सहेज सकते हैं जैसे my_model.col_msec_desired = "2018-01-02 03:04:05.678"; फिर Time::DATE_FORMATS[:db] रिकॉर्ड को सहेजने में संदर्भित नहीं किया जाएगा।

लारवेल पक्ष में संभावित समाधान

यह लिखते समय (2018-10-18) मुश्किल हो सकता है, लेकिन एक cmbertsch01 की हाल की लाराकास्ट पोस्ट

(नोट:टिप्पणी के बाद मूल पोस्ट के एक दिन बाद किया गया एक बड़ा अपडेट।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql के लिए कार्य

  2. PostgreSQL में एक तिथि में सप्ताह जोड़ें

  3. IN ऑपरेटर के साथ jsonb सरणियों को कैसे क्वेरी करें

  4. पोस्टग्रेस्क्ल पोर्ट भ्रम 5433 या 5432?

  5. आइसोलेशन लेवल कैसे सेट करें