ruby on rails रेल पर रूबी में, डेटटाइम, टाइमस्टैम्प, समय और तिथि के बीच क्या अंतर है?




ruby-on-rails datetime (2)

  1. : डेटाटाइम (8 बाइट्स)

    • स्टोर दिनांक और समय स्वरूपित YYYY-MM-DD एचएच: एमएम: एसएस
    • Birth_date जैसे कॉलम के लिए उपयोगी
  2. : टाइमस्टैम्प (4 बाइट्स)

    • 1 9 70-01-01 से सेकंड की स्टोर संख्या
    • अपडेटेड_ट, create_at जैसे कॉलम के लिए उपयोगी
  3. : तिथि (3 बाइट्स)
    • स्टोर की तारीख
  4. : समय (3 बाइट्स)
    • स्टोर समय

मेरे अनुभव में, प्रोग्रामिंग हमेशा खतरे और difficulity से भरा हुआ है जब तारीख / समय सही हो रही है।

रूबी और रेल ने हमेशा इस पर मुझे छेड़छाड़ की है, अगर केवल विकल्पों की जबरदस्त संख्या के कारण; मुझे कभी भी कोई विचार नहीं है जिसे मुझे चुनना चाहिए।

जब मैं रेल का उपयोग कर रहा हूं और ActiveRecord डेटाटाइप को देख रहा हूं तो मुझे निम्न मिल सकता है

: डेटाटाइम, टाइमस्टैंप, समय, और: तिथि

और यह नहीं पता कि मतभेद क्या हैं या कहां मिलते हैं।

क्या फर्क पड़ता है? आप इन्हें किसके लिए इस्तेमाल करते हैं?

(पीएस मैं Rails3 का उपयोग कर रहा हूँ)


ActiveRecord में अलग-अलग दिनांक / समय प्रारूपों के बीच अंतर रेल के साथ बहुत कुछ नहीं करता है और जो कुछ भी आप उपयोग कर रहे हैं उसके साथ करने के लिए सबकुछ करना है।

एक उदाहरण के रूप में MySQL का उपयोग करना (यदि किसी अन्य कारण के लिए यह सबसे लोकप्रिय नहीं है), तो आपके पास DATE , DATETIME , TIME और TIMESTAMP कॉलम डेटा प्रकार हैं; जैसे आपके पास CHAR , VARCHAR , FLOAT और INTEGER

तो, आप पूछते हैं, क्या अंतर है? खैर, उनमें से कुछ स्वयं व्याख्यात्मक हैं। DATE केवल एक तारीख संग्रहीत करता है, TIME केवल दिन का समय संग्रहीत करता है, जबकि DATETIME दोनों स्टोर करता है।

DATETIME और TIMESTAMP बीच का अंतर थोड़ा और सूक्ष्म है: DATETIME को YYYY-MM-DD HH:MM:SS रूप में स्वरूपित किया गया है YYYY-MM-DD HH:MM:SS । मान्य श्रेणी वर्ष 1000 से वर्ष 99 99 तक (और बीच में सब कुछ है। जबकि TIMESTAMP डेटाबेस से इसे लाने पर समान दिखता है, यह वास्तव में यूनिक्स टाइमस्टैंप के लिए एक मोर्चा है। इसकी वैध सीमा 1 9 70 से 2038 तक है। डेटाबेस इंजन के भीतर विभिन्न अंतर्निर्मित कार्यों से अलग, यहां स्टोरेज स्पेस है। क्योंकि DATETIME वर्ष, महीने का दिन, घंटा, मिनट और दूसरा में प्रत्येक अंक संग्रहीत करता है, यह कुल 8 बाइट्स का उपयोग करता है। केवल TIMESTAMP रूप में 1 9 70-01-01 से सेकंड की संख्या स्टोर करता है, यह 4 बाइट्स का उपयोग करता है।

आप here MySQL में समय प्रारूपों के बीच अंतर के बारे में अधिक पढ़ सकते हैं।

अंत में, यह आपके दिनांक / समय कॉलम की आवश्यकता के अनुसार आता है। क्या आपको 1 9 70 से पहले या 2038 के बाद तारीखों और समयों को स्टोर करने की आवश्यकता है? DATETIME प्रयोग करें। क्या आपको डेटाबेस आकार के बारे में चिंता करने की ज़रूरत है और आप उस टाइमरेंज के भीतर हैं? TIMESTAMP प्रयोग करें। क्या आपको केवल तारीख को स्टोर करने की आवश्यकता है? DATE प्रयोग करें। क्या आपको केवल एक समय स्टोर करने की आवश्यकता है? TIME प्रयोग करें।

ये सब कहकर, रेल वास्तव में आपके लिए इनमें से कुछ निर्णय लेते हैं । दोनों :timestamp और :datetime DATETIME को डिफ़ॉल्ट होगा, जबकि :date और :time क्रमशः DATE और TIME अनुरूप है।

इसका मतलब है कि रेल के भीतर, आपको केवल यह तय करना होगा कि आपको दिनांक, समय या दोनों को स्टोर करने की आवश्यकता है या नहीं।





timestamp