ActiveRecord में विभिन्न दिनांक / समय स्वरूपों के बीच अंतर रेल और जो कुछ भी आप डेटाबेस का उपयोग कर रहे हैं, उसके साथ सब कुछ करना है।
एक उदाहरण के रूप में MySQL का उपयोग करना (कोई अन्य कारण है क्योंकि यह सबसे लोकप्रिय है के लिए है), तुम हो DATE
, DATETIME
, TIME
और TIMESTAMP
स्तंभ डेटा प्रकार; आप बस के रूप में CHAR
, VARCHAR
, FLOAT
और INTEGER
।
तो, आप पूछते हैं, क्या अंतर है? खैर, उनमें से कुछ स्व-व्याख्यात्मक हैं। DATE
केवल एक तिथि संग्रहीत करता है, TIME
केवल दिन का समय DATETIME
संग्रहीत करता है , जबकि दोनों संग्रहीत करता है।
के बीच अंतर DATETIME
और TIMESTAMP
थोड़ा अधिक सूक्ष्म है: DATETIME
के रूप में स्वरूपित है YYYY-MM-DD HH:MM:SS
। मान्य पर्वतमाला वर्ष 1000 से वर्ष 9999 तक (और बीच में सब कुछ है। जब आप इसे डेटाबेस से लाते हैं तो समान TIMESTAMP
दिखता है । यह वास्तव में यूनिक्स टाइमस्टैम्प के लिए सिर्फ एक मोर्चा है । इसकी वैध सीमा 1970 से 2038 तक है। अंतर यहाँ, विभिन्न निर्मित डेटाबेस इंजन के भीतर काम करता है, भंडारण स्थान है अलग से। क्योंकि DATETIME
भंडार वर्ष, माह दिन, घंटा, मिनट में हर अंकों और दूसरा, यह 8 बाइट्स की कुल उपयोग करता है। के रूप में TIMESTAMP
केवल संख्या संग्रहीत करता है 1970-01-01 के बाद से, यह 4 बाइट्स का उपयोग करता है।
आप MySQL में समय प्रारूपों के बीच मतभेदों के बारे में अधिक पढ़ सकते हैं यहाँ ।
अंत में, यह नीचे आता है कि आपको क्या करने के लिए अपनी तिथि / समय कॉलम की आवश्यकता है। क्या आपको 1970 से पहले या 2038 के बाद की तारीखों और समय को स्टोर करने की आवश्यकता है? का उपयोग करें DATETIME
। क्या आपको डेटाबेस आकार के बारे में चिंता करने की ज़रूरत है और आप उस टाइमर के भीतर हैं? का उपयोग करें TIMESTAMP
। क्या आपको केवल एक तारीख संग्रहीत करने की आवश्यकता है? का उपयोग करें DATE
। क्या आपको केवल एक समय संग्रहीत करने की आवश्यकता है? का उपयोग करें TIME
।
यह सब कहने के बाद, रेल वास्तव में आपके लिए इनमें से कुछ निर्णय लेती है । दोनों :timestamp
और :datetime
लागू हो जाएगी DATETIME
, जबकि :date
और :time
मेल खाती है करने के लिए DATE
और TIME
, क्रमशः।
इसका मतलब है कि रेल के भीतर, आपको केवल यह तय करना होगा कि आपको तारीख, समय या दोनों को संग्रहीत करने की आवश्यकता है या नहीं।