2010-01-08 13 views
8

क्या मुझे टाइमरस्टैम्प को स्टोर करने के लिए MySQL में एक बड़ा पूर्णांक या नियमित पूर्णांक का उपयोग करना चाहिए? मैं इसे एक आईएनटी में संग्रहीत करने की योजना बना रहा हूं, न कि टाइमस्टैम्प या डेटाटाइम में निर्मित, जिससे मैं किस प्रकार का उपयोग करूँ?क्या मुझे टाइमस्टैम्प स्टोर करने के लिए MySQL में एक बड़ा INT या नियमित INT का उपयोग करना चाहिए?

+0

काश वहाँ था ठीक से MySQL और PHP में उपयोगकर्ताओं के लिए समय-क्षेत्रों करने के लिए नेट पर एक वैध ट्यूटोरियल, लगता है सभी जानकारी पुरानी हो चुकी है कि अब mysql बदल गया है टाइमस्टैम्प फ़ील्ड्स का प्रारूप डेटाटाइम – JasonDavis

उत्तर

11

इंट के लिए ऊपर रोल होता है कि 2038 में नकारात्मक (यदि आप यूनिक्स टाइमस्टैम्प का उपयोग कर रहे हैं): http://en.wikipedia.org/wiki/2038_problem

तो BIGINT शायद सबसे सुरक्षित विकल्प

+1

y2k38 समस्या होने की तुलना में y2k38 समस्या नहीं होगी। लगभग 2030 के आसपास, 64-बिट टाइमस्टैम्प का उपयोग करने के लिए सभी डेटाबेस को बदलने के लिए एक पागल भीड़ शुरू हो जाएगी और यह आसान होगा, कम से कम उन लोगों के लिए जिन्होंने बुद्धिमानी से पूर्णांक के बजाय टेबल में टाइमस्टैम्प का उपयोग किया :-) – paxdiablo

+2

* shrug * .... यदि आप इसे एक हस्ताक्षरित int बनाते हैं, तो आप 2100 और कुछ में अच्छी तरह से बढ़ सकते हैं (बशर्ते आपके पास एक ऐसा फ़ंक्शन है जो संख्याएं प्रदान करता रहता है, और आप उन्हें परिवर्तित करते हैं) –

+0

ठीक है। बुद्धिमान लोग जो डेटा के साथ काम के लिए बड़े पैमाने पर उपयोग करते हैं (डेटाबेस डेटाबेस नहीं हैं डेटाबेस के लिए डेटाबेस + प्रोग्राम) क्योंकि पोर्टेबिलिटी और डाटाबेस के साथ डेटाटाइम प्रारूपों के साथ समस्याएं, या किसी भी डेटाबेस के संस्करण। इंट इंट हैं। और ओरेकल, एसक्यूएल, माईएसक्यूएल, मारिया डीबी, और अन्य के साथ समस्या नहीं है। डेटाटाइम्स प्रकार, कई डेटाबेस अपडेट्स के साथ Google खोज पर बहुत सी समस्याएं, conpatibilties .. मुच वेस नो एस क्यूस्टन डी इंटेलिजेंसिया, एएस क्यूस्टन डी अनुभव ;-) कई बार यह बुद्धि की बात नहीं है, अनुभव का मामला है ;-) – abkrim

13

आपको इसे टाइमस्टैंप में संग्रहीत करना चाहिए क्योंकि डीबीएमएस टाइमस्टैम्प डेटा के लिए अनुकूलित करेगा।

मुझे उत्सुकता है कि आप उन सभी कड़ी मेहनत का त्याग क्यों करेंगे जो MySQL डेवलपर्स ने टाइमस्टैम्प को जिस तरह से करना चाहिए, उसे काम करने के लिए रखा है, और इसे किसी ऐसे चीज़ से बदलना जो लगभग निश्चित रूप से काम नहीं करेगा।

जब से तुम राज्य नहीं है क्यों आप एक पूर्णांक उपयोग करना चाहते हैं, मैं सिर्फ ग्रहण करने के लिए यह अस्थायी पागलपन था जा रहा हूँ और आप जल्दी ही ठीक हो जाएगा :-)

+1

जैसा बिल्कुल होता है, आमतौर पर उनका उपयोग किया जाता है क्योंकि PHP और अन्य ऐसी भाषाएं उचित एसक्यूएल तिथि प्रारूप की तुलना में टाइमस्टैम्प के साथ काम करना अधिक आसान बनाती हैं। –

+1

उस स्थिति में, मैं अंतर्निहित time_t प्राप्त करने के लिए UNIX_TIMESTAMP() का उपयोग करूंगा जो वैसे भी डीबी में है। – paxdiablo

+0

मेरी स्थिति में यह सिर्फ 0000000 के बजाय इस प्रारूप में 0000-00-00 के प्रारूप में mysql स्टोर पर नए संस्करणों का काम करता है, समय और डैश बंद हो सकता है लेकिन आपको विचार मिलता है। टाइमस्टैम्प एक वास्तविक टाइमस्टैम्प होता था लेकिन अब नहीं। मेरे सभी समय कार्यों को mysql से वास्तविक टाइमस्टैम्प की आवश्यकता है, इसलिए यदि मैं एक आईएनटी में टाइमस्टैम्प स्टोर करता हूं तो यह कम जगह का उपयोग करता है और यह कम प्रसंस्करण/आगे और पीछे परिवर्तित होता है।जैसा कि कहा गया है कि मेरे सभी कार्यों को किसी भी समय टाइमस्टैंप की आवश्यकता है, इसलिए यदि मैं इसे नई शैली टाइमस्टैम्प देता हूं, तो मुझे इसे php में वास्तविक टाइमस्टैम्प में बदलने की आवश्यकता होती है। परीक्षण के कई दिनों के बाद – JasonDavis

9

मुझे लगता है कि यह पूरी तरह से है कि आप क्या करना चाहते हैं पर निर्भर करता है। वहाँ समय/दिनांक प्रकार के लिए कुछ उचित प्रकार (देखें: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html)

  • DATE - आमतौर पर 3 बाइट्स, सीमा: 1000-01-019999-12-31 करने के लिए।
  • DATETIME - 8 बाइट्स, सीमा 1000-01-01 00:00:009999-12-31 23:59:59 को
  • TIMESTAMP - 4 बाइट 1970-01-01 00:00:01 यूटीसी 2038-01-19 03:14:07 यूटीसी तक होती है। फिर, वहाँ कुछ अर्थ मुद्दों के बारे में पता होना करने के लिए कर रहे हैं:

  • तारीख भंडार कैलेंडर दिनों, दिनांक (पूर्णांक TIMESTAMP की तरह 4 बाइट्स की है, bigint DATETIME की तरह 8 बाइट्स) और दोनों दुकान टाइमस्टैम्प दिनांक + समय एक दूसरी परिशुद्धता पर (उप-द्वितीय परिशुद्धता दिनांक अंकगणित में समर्थित है, लेकिन भंडारण के लिए नहीं)
  • टाइमस्टैम्प एक यूटीसी मूल्य स्टोर करता है। यही है, आप जिस भी मूल्य में चिपके रहते हैं वह सत्र के टाइमज़ोन (डिफ़ॉल्ट रूप से, सर्वर का टाइमज़ोन) से यूटीसी में परिवर्तित होता है और संग्रहीत होता है। पुनर्प्राप्ति पर, यूटीसी मूल्य सत्र में प्रभावी रूप से टाइमज़ोन में फिर से परिवर्तित हो जाता है।
  • टाइमस्टैम्प को स्वचालित रूप से सम्मिलित करने या अपडेट या दोनों पर वर्तमान टाइमस्टैंप प्राप्त करने के लिए घोषित किया जा सकता है। आप सबसे अच्छा जानकारी के लिए मैनुअल का अध्ययन (http://dev.mysql.com/doc/refman/5.1/en/timestamp.html देख)
संबंधित मुद्दे

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