डेटाबेस में मिलीसेकंड के साथ समय का भंडारण


10

डेटाबेस में "समय" संग्रहीत करने से संबंधित एक त्वरित प्रश्न। मैं उपयोगकर्ताओं के उस समय को लॉग कर रहा हूं जो रन 00: 00: 00: 00 (घंटे, मिनट, सेकंड, मिलीसेकंड) प्रारूप में है।

मैं मूल रूप से इसे स्टोर करने जा रहा था, TIMEलेकिन तब मुझे एहसास हुआ कि MySQL इस प्रकार में मिलीसेकंड का समर्थन नहीं करता है।

मैं उपयोगकर्ताओं के स्टॉपवॉच से लिया गया वास्तविक समय संग्रहीत कर रहा हूं, न कि उस समय जब वे भाग गए और समाप्त हो गए (इसे सम्मिलित किए जाने से पहले गणना की जाएगी)।

उपयोग करने के लिए सबसे अच्छा क्षेत्र प्रकार क्या होगा? मैं doubleया तो सोच रहा था float, लेकिन मुझे यकीन नहीं है कि काम करेगा?

जवाबों:


6

व्यक्तिगत रूप से, मैं अवधि के लिए पूर्णांक प्रकारों का उपयोग करूंगा

उदाहरण: अहस्ताक्षरित इंट कॉलम में 340,000 मिलीसेकंड 340000 है।

मेरे लिए, डेटाइम, समय, तिथि आदि समय में स्पष्ट बिंदुओं के लिए हैं। 340 सेकंड उस संदर्भ में अर्थहीन है। एक शुरुआत होने date/timeसे अवधि को निश्चित रूप से जोड़ा जा सकता है


3
intervalइस उद्देश्य के लिए एक मानक SQL डेटा प्रकार है। लेकिन सभी DBMS (और निश्चित रूप से MySQL नहीं) इसका समर्थन करते हैं।
a_horse_with_no_name

आपके उत्तर के लिए धन्यवाद, क्या मुझे इसे मानक प्रारूप में बदलने की आवश्यकता है क्योंकि वर्तमान में यह प्रारूप 00: 00: 00: 00 में है? क्या मैं उस प्रकार के प्रारूप को अनुमति देने के लिए कॉलम सेट कर सकता हूं?
इलियट

@ ईलियट: प्रदर्शन के लिए, आप कर सकते हैं। यह सिर्फ एक नंबर है अन्यथा
gbn

1
ध्यान दें कि आपका प्रारूप शायद (या पठनीयता के लिए होना चाहिए) 00: 00: 00.000 (बृहदान्त्र के बजाय डॉट को नोट करें और मिलीसेकंड के लिए 3 अंक।
Jannes

2

यह इस बात पर निर्भर करता है कि आप कितने समय तक मापना चाहते हैं। यदि आप 2 ^ 32, या 4294967296 एमएस की तुलना में किसी भी समय रिकॉर्डिंग नहीं करेंगे, तो एक नियमित अहस्ताक्षरित इंट की तुलना में ठीक है। यह घड़ी के समय के लगभग 50 दिनों के अनुरूप है, btw।

यदि आप यूनिक्स समय टिकटों या बड़े अंतरालों को संग्रहीत कर रहे थे, तो bigint का उपयोग करके देखें। यह आपको 8 बाइट्स की जगह या 1.84467440737096e + 19 ms (जो लगभग 500 मिलियन वर्ष है) पर लंबे समय तक रिकॉर्ड करने की क्षमता देता है


1

बाद में आप MySQL 5.6.4 का उपयोग करें या हैं, तो आप उपयोग कर सकते हैं TIME(3), DATETIME(3)और TIMESTAMP(3)स्तंभ प्रकार 6 दशमलव अंक तक जमा करने (की जगह 3दशमलव अंक की संख्या के साथ आप की जरूरत)। आंशिक भाग को डॉट के बाद टाइम स्ट्रिंग में जोड़ा जाता है; उदाहरण: 2018-09-08 17:51:04.781

आधिकारिक संदर्भ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.