डेटाबेस में समय (hh: mm) स्टोर करने का सबसे अच्छा तरीका


100

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


एसक्यूएल सर्वर 2005 के लिए टाइम के बराबर क्या है?
एरान मोराद

@BoratSagdiyev SQL Server 2005 में एक नहीं है, इसीलिए मैंने सवाल पूछा।
मैथ्यू ड्रेसर

जवाबों:


135

आप इसे आधी रात के पिछले मिनट की संख्या के पूर्णांक के रूप में संग्रहीत कर सकते हैं:

जैसे।

0 = 00:00 
60 = 01:00
252 = 04:12

हालाँकि आपको समय के पुनर्गठन के लिए कुछ कोड लिखने की आवश्यकता होगी, लेकिन यह मुश्किल नहीं होना चाहिए।


8
फिर वास्तविक समय वापस पाने के लिए DATEADD () का उपयोग करें। यहां तक ​​कि स्मालिंट भी पर्याप्त होगा।
जोएल कोएहॉर्न

36
वहाँ किया गया है, कि ... मिनट = dd% 60 और घंटे = dd / 60 ints की चाल है।
ओसामा अल-मदीद

2
यह एक महान, सरल और स्पष्ट विचार है। +1
व्हिस्की सिएरा

7
एक छोटा सा नुकसान डेटाबेस में पठनीयता की कमी है
Jowen

हमें कुछ दिनों, घंटों और मिनटों को स्टोर करने की आवश्यकता है; SQL सर्वर में समय डेटा प्रकार केवल 23:59:59 तक जाता है, इसलिए हम इसका उपयोग नहीं कर सकते। आपके उत्तर से प्रेरित होकर हमने दिन के लिए तीन अंतर स्तंभ तय किए: घंटे: अधिकतम लचीलेपन के लिए मिनट। धन्यवाद!
माता

55

यदि आप SQL Server 2008+ का उपयोग कर रहे हैं, तो TIMEडेटाटाइप पर विचार करें । अधिक उपयोग उदाहरण के साथ SQLTeam लेख


15

DATETIME प्रारंभ DATETIME अंत

मैं आपको दो DATETIME मानों का उपयोग करने के लिए कहता हूं , जैसे कि event_start और event_end जैसे कुछ लेबल ।

समय एक जटिल व्यवसाय है

दुनिया के अधिकांश लोगों ने अब ज्यादातर मापों के लिए सही या गलत तरीके से इनकार आधारित मीट्रिक प्रणाली को अपनाया है। यह कुल मिलाकर अच्छा है, क्योंकि कम से कम हम सभी सहमत हो सकते हैं कि एजी, एक एमएल है, एक घन सेमी है। कम से कम लगभग इतना। मीट्रिक प्रणाली में कई खामियां हैं, लेकिन कम से कम यह अंतरराष्ट्रीय स्तर पर लगातार दोषपूर्ण है।

हालांकि समय के साथ, हमारे पास; एक सेकंड में 1000 मिलीसेकंड, 60 सेकंड से एक मिनट, 60 मिनट से एक घंटा, प्रत्येक आधे दिन में 12 घंटे, लगभग 30 दिन प्रति माह जो महीने और यहां तक ​​कि साल के अनुसार अलग-अलग होते हैं, प्रत्येक देश का समय दूसरों से अलग होता है। , जिस तरह से प्रत्येक देश में स्वरूपित समय भिन्न होता है।

यह पचाने के लिए बहुत कुछ है, लेकिन इस तरह के जटिल परिदृश्य के लिए एक सरल समाधान होना लंबा और छोटा है।

कुछ कोनों को काटा जा सकता है, लेकिन ऐसे भी हैं जहां यह समझदार नहीं है

यद्यपि यहाँ शीर्ष उत्तर बताता है कि आप आधी रात के बाद का एक पूर्णांक स्टोर करते हैं, यह पूरी तरह से उचित प्रतीत हो सकता है, मैंने ऐसा करने से बचना सीख लिया है।

दो DATETIME मूल्यों को लागू करने के कारण सटीकता, संकल्प और प्रतिक्रिया में वृद्धि के लिए हैं।

जब डिजाइन अवांछनीय परिणाम पैदा करता है तो ये सभी बहुत काम आते हैं।

क्या मैं आवश्यकता से अधिक डेटा संग्रहीत कर रहा हूं?

यह शुरू में ऐसा प्रतीत हो सकता है कि मेरी आवश्यकता से अधिक जानकारी संग्रहीत की जा रही है, लेकिन इस हिट को लेने का एक अच्छा कारण है।

इस अतिरिक्त जानकारी को संग्रहीत करने से मुझे हमेशा समय और प्रयास की बचत होती है, क्योंकि मुझे यह अनिवार्य रूप से लगता है कि जब किसी को बताया जाता है कि कुछ कब तक हुआ है, तो वे अतिरिक्त रूप से जानना चाहते हैं कि कब और कहां घटना हुई।

यह बहुत बड़ा ग्रह है

अतीत में, मुझे इस बात को नजरअंदाज करने का दोषी माना गया है कि इस ग्रह पर अन्य देश भी हैं। यह उस समय एक अच्छा विचार था, लेकिन इससे ALWAYS की समस्याएँ, सिरदर्द और बाद में समय बर्बाद हो गया। हमेशा सभी समय क्षेत्रों पर विचार करें।

सी#

एक तारीख समय सी # में एक स्ट्रिंग के लिए अच्छी तरह से प्रदान करता है। ToString (स्ट्रिंग प्रारूप) विधि कॉम्पैक्ट और पढ़ने में आसान है।

उदाहरण के लिए

new TimeSpan(EventStart.Ticks - EventEnd.Ticks).ToString("h'h 'm'm 's's'")

एस क्यू एल सर्वर

यदि आप अपने डेटाबेस को अपने एप्लिकेशन इंटरफ़ेस से अलग पढ़ रहे हैं, तो डेटटाइम्स एक नज़र में पढ़ने के लिए सुखद हैं और उन पर गणना करना सरल है।

उदाहरण के लिए

SELECT DATEDIFF(MINUTE, event_start, event_end)

ISO8601 दिनांक मानक

यदि SQLite का उपयोग कर रहे हैं, तो आपके पास यह नहीं है, इसलिए इसके बजाय एक पाठ क्षेत्र का उपयोग करें और इसे ISO8601 प्रारूप में स्टोर करें।

"2013-01-27T12: 30: 00 + 0000"

टिप्पणियाँ:

  • यह 24 घंटे की घड़ी का उपयोग करता है *

  • ISO8601 मानचित्र का समय ऑफसेट (या +0000) सीधे एक जीपीएस निर्देशांक के देशांतर मान के लिए (खाता दिन की बचत या देशव्यापी नहीं लेना) हिस्सा है।

उदाहरण के लिए

TimeOffset=(±Longitude.24)/360 

... जहाँ ± पूर्व या पश्चिम दिशा को संदर्भित करता है।

इसलिए यह विचार करने योग्य है कि क्या यह डेटा के साथ-साथ देशांतर, अक्षांश और ऊँचाई के भंडारण के लायक होगा। यह आवेदन में अलग-अलग होगा।

  • ISO8601 एक अंतर्राष्ट्रीय प्रारूप है।

  • विकी http://en.wikipedia.org/wiki/ISO_8601 पर अधिक जानकारी के लिए बहुत अच्छा है ।

  • दिनांक और समय को अंतर्राष्ट्रीय समय में संग्रहीत किया जाता है और ऑफसेट दर्ज किया जाता है कि दुनिया में समय कहां संग्रहीत किया गया था।

मेरे अनुभव में हमेशा पूर्ण तिथि और समय संग्रहीत करने की आवश्यकता होती है, इस बात की परवाह किए बिना कि क्या मुझे लगता है कि जब मैं परियोजना शुरू करूंगा। ISO8601 यह करने का एक बहुत अच्छा, भविष्य की ओर ले जाने वाला तरीका है।

मुफ्त के लिए अतिरिक्त सलाह

यह एक श्रृंखला की तरह एक साथ समूह बनाने के लायक भी है। उदाहरण के लिए, यदि कोई रेस रिकॉर्ड करता है, तो पूरे ईवेंट को रैसर, रेस_क्रिसिट, सर्किट_चेकप्वाइंट और सर्किट_लैप द्वारा समूहीकृत किया जा सकता है।

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

जितना अधिक आप अंदर डालते हैं, उतना ही आप बाहर निकलते हैं

मैं अंतरिक्ष के साथ जितना संभव हो उतना किफायती होने की इच्छा को पूरी तरह से समझता हूं, लेकिन जानकारी खोने की कीमत पर मैं शायद ही कभी ऐसा करूंगा।

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

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

बेहतर आपका प्रारंभिक डिजाइन, कम खर्चीला मरम्मत बाद में होगा।

मैं केवल यह सब कहता हूं, क्योंकि अगर मैं समय पर वापस जा सकता था, तो यह वही है जो मैं वहां पहुंचने पर खुद को बताऊंगा।


2
आपकी टिप्पणी "ISO8601 मैप्स का +0000 हिस्सा सीधे एक जीपीएस निर्देशांक में अक्षांश के लिए" गलत है। यह UTC से भिन्नता का
गैरी वॉकर

10

बस एक नियमित रूप से डेटाइम स्टोर करें और बाकी सब चीजों को नजरअंदाज करें। अतिरिक्त समय लेखन कोड क्यों खर्च करते हैं जो एक इंट लोड करता है, इसे हेरफेर करता है, और इसे एक डेटाइम में परिवर्तित करता है, जब आप सिर्फ एक डेटाइम लोड कर सकते थे?


3
हार्ड ड्राइव पर जगह बचाने के लिए एक संभावित कारण हो सकता है - एक DATETIMEडेटा प्रकार को स्टोर करने के लिए 4 बाइट्स लगते हैं, जबकि एSMALLINT उदाहरण के लिए, केवल एक चौथाई लेता है। कोई बड़ा अंतर नहीं है यदि आपके पास केवल कुछ हजार पंक्तियाँ हैं, लेकिन यदि आपके पास कई कंपनियों के रूप में कई लाखों पंक्तियाँ हैं, तो आपकी अंतरिक्ष बचत पर्याप्त होगी।
शेरिडन

32
संभवतः, लेकिन विचार करें कि 12 लोगों ने इस सवाल का जवाब दिया, प्रत्येक ने कहा, इसके बारे में सोचने के लिए 15 मिनट। मान लें कि वे सभी प्रोग्रामर हैं और प्रति घंटे $ 50 बनाते हैं। इस समस्या के बारे में सोचने के लिए केवल समय की लागत के साथ , आप अतिरिक्त बाइट्स को स्टोर करने के लिए एक चमकदार नया 2TB हार्ड ड्राइव खरीद सकते थे।
सेठ

@ आप सही है अगर हम केवल अतिरिक्त बाइट्स के बारे में बात करते हैं। लेकिन आपका सुझाव केवल तभी हो सकता है जब यह 1-2 डेवलपर्स के साथ छोटा प्रोजेक्ट हो। लेकिन यह बहुत सारे डेवलपर्स (प्लस क्यूए) के साथ एक बड़ी परियोजना होगी, जब एक नया प्रोग्रामर यह पता लगाने की कोशिश करता है तो यह एक बड़ी समस्या होगी। काश, हम सभी व्यावसायिक तर्क पर निर्भर होते।
मध्यस्थ

क्लाउड सेवाओं के साथ, डिस्क स्थान की बचत उन मामलों में महत्वपूर्ण हो सकती है जहां आप प्रति बाइट का भुगतान करते हैं / संसाधित होते हैं।
RedShift

2
एक और मजेदार समस्या यह है कि यदि आप समय घटक पर भरोसा कर रहे हैं, तो यह वर्ष के विभिन्न समयों में उपयोग किए जाने पर डेलाइट बचत समायोजन के लिए जिम्मेदार नहीं होगा।
क्रिस सेफ़र्ट

4

चूँकि आपने SQL सर्वर 2008 पर इसका थोड़ा सा भी उल्लेख नहीं किया है, इसलिए आप मध्य रात्रि के बाद के समय डेटाटाइप का उपयोग कर सकते हैं अन्यथा मिनटों का उपयोग करें


3

SQL Server वास्तव में समय को एक दिन के अंशों के रूप में संग्रहीत करता है। उदाहरण के लिए, 1 पूरे दिन = 1. 12 घंटे का मूल्य 0.5 का मान है।

यदि आप DATETIME प्रकार का उपयोग किए बिना समय मान संग्रहीत करना चाहते हैं, तो समय को दशमलव रूप में संग्रहीत करना उस आवश्यकता के अनुरूप होगा, जबकि DATETIME सरल में रूपांतरण करना भी।

उदाहरण के लिए:

SELECT CAST(0.5 AS DATETIME)
--1900-01-01 12:00:00.000

मूल्य को एक DECIMAL (9,9) के रूप में संग्रहीत करने से 5 बाइट्स की खपत होगी। हालांकि, अगर अत्यंत महत्व का सटीक नहीं है, तो एक असली केवल 4 बाइट्स का उपभोग करेगा। या तो मामले में, कुल गणना (यानी माध्य समय) को संख्यात्मक मूल्यों पर आसानी से गणना की जा सकती है, लेकिन डेटा / समय प्रकारों पर नहीं।


"SQL सर्वर वास्तव में समय को एक दिन के अंशों के रूप में संग्रहीत करता है।" मुझे लगता है कि यह पहले 4 बाइट्स में समय (या उससे पहले) 01-जनवरी -1900, दूसरी 4 बाइट्स में मिलीसेकंड में स्टोर करता है। (स्मॉलटेटटाइम प्रत्येक के लिए 2 बाइट्स को संकरी तिथि सीमा और मिनटों के बजाय समय के लिए मिलीसेकंड के साथ उपयोग करता है)
क्रिस्टन

मुझे पता है (99.99% सुनिश्चित) कि दिन के समय के लिए यह अंश है।
graham.reeds

2

मैं उन्हें एक पूर्णांक (HH * 3600 + MM * 60) में परिवर्तित करूँगा, और इसे इस तरह से संग्रहीत करूँगा। छोटे भंडारण आकार, और अभी भी साथ काम करना काफी आसान है।


2

यदि आप MySQL का उपयोग कर रहे हैं तो TIME का एक फ़ील्ड प्रकार और संबंधित कार्यक्षमता जो TIME के ​​साथ आती है।

00:00:00 मानक यूनिक्स समय प्रारूप है।

यदि आपको कभी पीछे मुड़कर देखना है और हाथ से तालिकाओं की समीक्षा करना है, तो पूर्णांक वास्तविक समय की तुलना में अधिक भ्रमित हो सकते हैं।


1

स्मालडैटटाइम को आज़माएं। यह आपको वह नहीं दे सकता है जो आप चाहते हैं, लेकिन यह आपकी भविष्य की जरूरतों में तारीख / समय के हेरफेर में आपकी मदद करेगा।


अगर @mdresser <MSSQL 2005 का उपयोग कर रहा था, तो सर्वर "आउट-ऑफ-रेंज स्मालडलटाइम वेल्यू" को ट्रफ कर देगा
फर्गस

1

क्या आप वाकई केवल घंटों और मिनटों की आवश्यकता है? यदि आप इसके साथ कुछ भी सार्थक करना चाहते हैं (जैसे उदाहरण के लिए दो ऐसे डेटा बिंदुओं के बीच समय की गणना करना) जिसमें समय क्षेत्र और डीएसटी के बारे में जानकारी न होना गलत परिणाम दे सकता है। समय क्षेत्र आपके मामले में लागू नहीं होता है, लेकिन DST सबसे निश्चित रूप से होगा।


1

मिनट-बीती-आधी रात के बजाय हम इसे 24 घंटे की घड़ी के रूप में स्टोर करते हैं, एक स्माल्ट के रूप में।

09:12 = 912 14:15 = 1415

जब हम "मानव पठनीय रूप" में परिवर्तित होते हैं, तो हम केवल एक बृहदान्त्र सम्मिलित करते हैं: "दाईं ओर से दो वर्ण। यदि आपको ज़रूरत हो तो ज़ीरो के साथ लेफ्ट-पैड। गणित को हर तरह से बचाता है, और कुछ कम बाइट्स (varchar की तुलना में) का उपयोग करता है, साथ ही यह भी बताता है कि मूल्य संख्यात्मक है (अल्फ़ान्यूमेरिक के बजाय)

बहुत नासमझ हालांकि ... वहाँ कई बार पहले से ही IMHO के लिए MS SQL में एक टाइम डेटाटाइप होना चाहिए था ...


क्रिस्टन बिल्कुल सही है, लेकिन केवल अगर उसकी 24 घंटे की अवधि का प्रतिनिधित्व करने वाले घंटों और मिनटों के बारे में धारणा सही है। 10 बिट्स को 0..1439 मिनट संग्रहीत करने की आवश्यकता होती है। इसका मतलब है कि एक अतिरिक्त 6 बिट्स हैं जिन्हें आप जैसे चाहें उपयोग कर सकते हैं, इसलिए रचनात्मक होने के लिए जगह है। मैं सुझाव दूंगा कि आप जिस समय-क्षेत्र में हैं, उसके लिए प्रति घंटे ऑफ़सेट को स्टोर करने के लिए 5 बिट्स का उपयोग कर सकते हैं, लेकिन केवल अगर पूछने वाला केवल 23:59 (एक मिनट से आधी रात तक) का अधिकतम समय संग्रहीत करना चाहता था
WonderWorker

1

मुझे लगता है कि आप पूछ रहे हैं कि एक चर है जो मिनटों को एक संख्या के रूप में संग्रहीत करेगा। यह पूर्णांक चर के विभिन्न प्रकारों के साथ किया जा सकता है:

SELECT 9823754987598 AS MinutesInput

फिर, अपने कार्यक्रम में आप केवल इस रूप में देख सकते हैं कि आप किस रूप में गणना करना चाहते हैं:

long MinutesInAnHour = 60;

long MinutesInADay = MinutesInAnHour * 24;

long MinutesInAWeek = MinutesInADay * 7;


long MinutesCalc = long.Parse(rdr["MinutesInput"].toString()); //BigInt converts to long. rdr is an SqlDataReader.   


long Weeks = MinutesCalc / MinutesInAWeek;

MinutesCalc -= Weeks * MinutesInAWeek;


long Days = MinutesCalc / MinutesInADay;

MinutesCalc -= Days * MinutesInADay;


long Hours = MinutesCalc / MinutesInAnHour;

MinutesCalc -= Hours * MinutesInAnHour;


long Minutes = MinutesCalc;

एक समस्या उत्पन्न होती है जहाँ आप दक्षता के लिए अनुरोध करते हैं। लेकिन, अगर आप समय के लिए कम हैं तो बस अपने मिनट के मूल्य को स्टोर करने के लिए एक अशक्त बिगआईंट का उपयोग करें।

शून्य के मान का अर्थ है कि समय अभी तक दर्ज नहीं किया गया है।

अब, मैं बाहरी-अंतरिक्ष के लिए एक गोल-यात्रा के रूप में समझाऊंगा।

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

उदाहरण के लिए:

  • यदि MinutesInput = 0 .. 255 है तो TinyInt का उपयोग करें (ऊपर वर्णित रूप में कनवर्ट करें)।

  • यदि MinutesInput = 256 .. 131071 तो SmallInt का उपयोग करें (ध्यान दें: SmallInt का न्यूनतम मान -32,768 है। इसलिए, ऊपर को परिवर्तित करने से पहले पूर्ण श्रेणी का उपयोग करने के लिए भंडारण और पुनर्प्राप्त करने के समय 32768 को नकारें और जोड़ें)।

  • यदि MinutesInput = 131072 .. 8589934591 तो Int (नोट: Negate और आवश्यकतानुसार 2147483648 जोड़ें) का उपयोग करें।

  • यदि MinutesInput = 8589934592 .. 36893488147419103231 तो का उपयोग BigInt (: जोड़ें और आवश्यक के रूप में निगेट 9223372036854775808 नोट)।

  • यदि MinutesInput> 36893488147419103231 है, तो मैं व्यक्तिगत रूप से VARCHAR (X) का उपयोग कर रहा हूँ X एक चार्ट बाइट के बाद से आवश्यक रूप से बढ़ रहा है। मुझे बाद में इस उत्तर को पूर्ण रूप से वर्णन करने के लिए (या शायद एक साथी स्टैवर्टोफ़्लोवी इस उत्तर को समाप्त कर सकता है) पर फिर से भेजना होगा।

चूंकि प्रत्येक मूल्य निस्संदेह एक अद्वितीय कुंजी की आवश्यकता होगी, डेटाबेस की दक्षता केवल तभी स्पष्ट होगी जब संग्रहीत मूल्यों की सीमा बहुत छोटे (0 मिनट के करीब) और बहुत अधिक (8589934591 से अधिक) के बीच एक अच्छा मिश्रण हो।

जब तक संग्रहीत किए जा रहे मूल्य वास्तव में 36893488147419103231 से अधिक संख्या तक पहुंचते हैं, तब आपके पास अपने मिनटों का प्रतिनिधित्व करने के लिए एक एकल BigInt कॉलम हो सकता है, क्योंकि आपको एक विशिष्ट पहचानकर्ता पर एक इंटेस्ट करने की आवश्यकता नहीं होगी और दूसरा मिनट मूल्य को संग्रहीत करने के लिए एक और इंट।


0

UTC प्रारूप में समय की बचत से क्रिस्टन के सुझाव के अनुसार बेहतर मदद मिल सकती है।

सुनिश्चित करें कि आप 24 घंटे की घड़ी का उपयोग कर रहे हैं क्योंकि UTC में कोई मेरिडियन AM या PM नहीं है।

उदाहरण:

  • 4:12 AM - 0412
  • 10:12 AM - 1012
  • 2:28 PM - 1428
  • 11:56 PM - 2356

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


0

A / के ticksरूप में स्टोर करें , जो वर्तमान में मिलीसेकंड में मापा जाता है। अद्यतन मूल्य को देखकर पाया जा सकता हैlongbigintTimeSpan.TicksPerSecond

अधिकांश डेटाबेस में डेटाइम प्रकार होता है जो पर्दे के पीछे टिक के रूप में समय को स्वचालित रूप से संग्रहीत करता है, लेकिन कुछ डेटाबेस जैसे कि स्क्लेलाइट, टिक को संग्रहीत करने की तारीख को स्टोर करने का एक तरीका हो सकता है।

अधिकांश भाषाएं TicksTimeSpan→ से आसान रूपांतरण की अनुमति देती हैं Ticks

उदाहरण

C # में कोड होगा:

long TimeAsTicks = TimeAsTimeSpan.Ticks;

TimeAsTimeSpan = TimeSpan.FromTicks(TimeAsTicks);

हालांकि जागरूक रहें, क्योंकि SqlLite के मामले में, जो केवल विभिन्न प्रकारों की एक छोटी संख्या प्रदान करता है, जो हैं; INT, REALऔरVARCHAR यह एक स्ट्रिंग या INTसंयुक्त दो कोशिकाओं के रूप में टिक्स की संख्या को स्टोर करने के लिए आवश्यक होगा । यह INTएक 32bit हस्ताक्षरित संख्या है, जबकि BIGINTएक 64 बिट हस्ताक्षरित संख्या है क्योंकि यह है ।

ध्यान दें

हालांकि, मेरी व्यक्तिगत प्राथमिकता एक ISO8601तार के रूप में दिनांक और समय को संग्रहीत करने के लिए होगी ।


-1

IMHO क्या सबसे अच्छा समाधान है, यह इस बात पर निर्भर करता है कि आप डेटाबेस के बाकी हिस्सों में समय कैसे स्टोर करते हैं (और आपके आवेदन के बाकी हिस्से)

व्यक्तिगत रूप से मैंने SQLite के साथ काम किया है और हमेशा निरपेक्ष समय के भंडारण के लिए यूनिक्स टाइमस्टैम्प का उपयोग करने की कोशिश करता हूं , इसलिए दिन के समय के साथ काम करते समय (जैसे आप पूछते हैं) मैं करता हूं कि ग्लेन सोलबेरी अपने उत्तर में क्या लिखता है और आधी रात को सेकंड की संख्या को स्टोर करता है।

जब यह सामान्य दृष्टिकोण लोगों को ले जा रहा है (मेरे सहित!) कोड पढ़ना कम उलझन में है अगर मैं हर जगह समान मानक का उपयोग करता हूं

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