2010-02-07 5 views
5

अस्वीकरण: यह datetime vs. timestamp? का डुप्लिकेट हो सकता है, लेकिन मुझे लगता है कि मैं जवाब में से आश्वस्त नहीं हूँ:MySQL में DATETIME कॉलम पर TIMESTAMP चुनने के अच्छे कारण क्या हैं?

मेरा प्रश्न है:
क्या अच्छे कारणों MySQL में DATETIME स्तंभों पर TIMESTAMP चुनने के लिए कर रहे हैं?

मैं बहुत यकीन है कि मैं सब कुछ वहाँ उन दोनों के बीच अंतर के बारे में है पता नहीं है हूँ, इसलिए मैं अपने ज्ञान के लिए TIMESTAMP (TS) की तुलना में DATETIME के ​​मुख्य लाभ (DT) की सूची की कोशिश करेंगे:

  • DT मानव पठनीय
  • DT (TSTO_DATE का उपयोग किए बिना नहीं है) है 8999 वर्ष (1000-01-01 00:00:009999-12-31 23:59:59 करने के लिए)
    के possble समयावधि (

    : TS केवल लगभग 68 वर्ष, 1970-01-012038-01-19 करने के लिए)
  • DT क्षेत्रों
  • DT उन्नत तिथि गणना (SELECT NOW() + INTERVAL 2 DAY)

और ठीक इसके विपरीत के लिए इस्तेमाल किया जा सकता है (this blog post के अनुसार) में बेहतर प्रदर्शन करने लगते हैं

  • TS केवल 4 बाइट्स (DT 8 का उपयोग करता है)
  • TS यूटीसी मूल्यों के रूप में जमा है और ग्राहक के समय क्षेत्र
  • TS स्तंभों की स्थापना के रूप में एक निगरानी के लिए "लॉग ऑन" जब एक पंक्ति परिवर्तन

एकमात्र कारण मैं यह तो उपयोग करने के लिए देखना है सेवा कर सकते हैं के अनुसार बदल रहे हैं पंक्ति निगरानी होगी, लेकिन TIMESTAMP की सीमा को देखकर, जो "केवल" 28 वर्ष * में समाप्त हो जाएगी, मैं बजाय एक डालने या अपडेट ट्रिगर के साथ जाऊंगा।

तो, मुझे क्या याद आ रही है? मुझे अभी भी कोई अच्छा उद्देश्य नहीं है किसी भी उद्देश्य के लिए टाइमस्टैम्प चुनने का कारण?

* मैं जानता हूँ कि, यह प्रतीत होता है काफी लंबे समय से है, लेकिन 60 के दशक कुछ इंजीनियर भी साल क्षेत्र के 2 बाइट्स बंद दाढ़ी बनाने के लिए फैसला किया है में वापस आ गया है, क्योंकि अपने कंप्यूटर सिस्टम होगा कभी नहीं वर्ष 2000 तक रन ... ..

उत्तर

2

डीटी कॉलम एक पंक्ति में परिवर्तन करते समय निगरानी के लिए "लॉग" के रूप में भी काम कर सकते हैं, मैं उनका उपयोग करता हूं और ऐसा करने के लिए ट्रिगर करता हूं।

मैं आमतौर पर बहुत अधिक दिनांक पार्सिंग पर कटौती के रूप में बहुत सी PHP सामग्री के साथ काम करते समय टाइमस्टैम्प का उपयोग करता हूं। यदि आवश्यकता कभी उठती है, तो मैं डेटाटाइम का उपयोग करने के लिए अपने सॉफ़्टवेयर को अपडेट कर सकता हूं।

1

यहां डीटी का एक मजाकिया पहलू है जिसका मैंने पहले से उपयोग किया है: कम से कम MySQL में डीटी का उपयोग करना - आपके पास वर्ष 0000 ", और/या दोनों महीने और दिन छोड़ने का विकल्प है:" 00-00 "। यह पूरी जानकारी की आवश्यकता के बिना जन्मदिन की तारीखों को संग्रहीत करने के लिए आसान है!

+1

सच; हालांकि, यदि आप बाद में डेटा को एक अलग डीबीएमएस में प्रतिलिपि/माइग्रेट करने की आवश्यकता है, तो यह आसान से कम हो जाता है जिसके लिए दिनांक फ़ील्ड वास्तव में (वास्तविक) तिथियों की आवश्यकता होती है। वहां गया, ... – sleske

2

मुख्य प्रश्न यह है: दिनांक/टाइमस्टैम्प क्षेत्र का उद्देश्य क्या है? यदि यह सिर्फ एक लॉग फ़ाइल में एक टाइमस्टैंप है जहां आप केवल वास्तविक समय को स्टोर करते हैं तो टाइमस्टैम बेहतर विकल्प है। क्योंकि इसे केवल 4 बाइट की आवश्यकता है और हम उस समय के दायरे में हैं जो टाइमस्टैम्प इसे कवर कर सकता है। यदि यह जन्म तिथि की तारीख है तो डेटटाइम अच्छी पसंद है। हमें उम्मीद है कि टाइमस्टैम्प दायरे के अंत से पहले हमारे पास समाधान होगा। ;) (मेरी अंग्रेजी के लिए खेद है)।

+1

मैं आवश्यक भंडारण से सहमत हूं, लेकिन DATETIME का उपयोग करते समय गति लाभ इस से अधिक है, खासकर जब आप किसी विशिष्ट दिनांक पर किसी ईवेंट की खोज कर रहे हैं। –

+1

'हमें उम्मीद है कि टाइमस्टैम्प स्कोप के अंत से पहले हमारे पास समाधान होगा।' मुझे लगता है कि जनवरी 2038 के मध्य में हमारे पास एक अच्छा मीडिया रान होगा :-)। –

संबंधित मुद्दे