हाँ। के लिए उपयोग-मामले हैं TIMESTAMP WITHOUT TIME ZONE
।
- सामान्य व्यावसायिक एप्लिकेशन में इस प्रकार का उपयोग केवल इसके लिए किया जाएगा:
- भविष्य की नियुक्तियों की बुकिंग
- विभिन्न समय क्षेत्रों में एक ही समय के दिन का प्रतिनिधित्व करना, जैसे कि टोक्यो में 23 तारीख को दोपहर और पेरिस में (दो अलग-अलग क्षणों के अलावा, एक ही समय के दिन)
- ट्रैकिंग क्षणों के लिए, समयरेखा पर विशिष्ट बिंदु, हमेशा उपयोग करें
TIMESTAMP WITH TIME ZONE
, नहीं WITHOUT
।
TIMESTAMP WITHOUT TIME ZONE
मान हैं नहीं समय, पर एक बिंदु नहीं वास्तविक क्षणों। वे संभावित क्षणों के बारे में एक मोटे विचार का प्रतिनिधित्व करते हैं, समय रेखा पर संभव बिंदुओं के बारे में 26-27 घंटे (दुनिया भर में समय क्षेत्र की सीमा) के साथ। जब तक आप टाइम ज़ोन या ऑफ़सेट-यूटीसी लागू नहीं करते हैं, तब तक उनका कोई वास्तविक अर्थ नहीं है ।
Ex: क्रिसमस
उदाहरण के लिए, मान लें कि आपको छुट्टियों / पवित्र दिनों की शुरुआत रिकॉर्ड करने की आवश्यकता है।
Table: holiday_
Column: year_ Type: SMALLINT
Column: description_ Type: VARCHAR
Column: start_ Type: TIMESTAMP WITHOUT TIME ZONE
इस तथ्य को दर्ज करने के लिए कि इस वर्ष 25 दिसंबर की आधी रात के बाद क्रिसमस शुरू होता है, हमें 2016-12-25 00:00:00
बिना किसी समय क्षेत्र के कहने की आवश्यकता है । सांता के दिन के शुरू में वह आधी रात के बाद ऑकलैंड एनजेड का दौरा करता है, क्योंकि यह दुनिया के सबसे पुराने मिडनाइट्स में से एक है। फिर वह पश्चिम की ओर अपने तरीके से काम करता है, जैसा कि अगली आधी रात को होता है, जल्द ही फिलीपींस पहुंचता है। फिर बारहसिंगा एक दिशा में आगे बढ़ता है, आधी रात को भारत पहुंचता है जो कि ऑकलैंड में आधी रात के कई घंटे बाद होता है। बहुत बाद में अभी भी पेरिस FR में आधी रात है, और अभी भी बाद में मॉन्ट्रियल CA में आधी रात है। सांता द्वारा की जाने वाली ये सभी यात्राएं अलग-अलग समय पर होती हैं , फिर भी सभी आधी रात के तुरंत बाद, प्रत्येक इलाके के अपने मध्य रात्रि में होती हैं।
तो 2016-12-25 00:00:00
क्रिसमस की शुरुआत के रूप में किसी भी समय क्षेत्र के बिना रिकॉर्डिंग जानकारीपूर्ण और वैध है, लेकिन केवल अस्पष्ट। जब तक आप "ऑकलैंड में क्रिसमस" या "मॉन्ट्रियल में क्रिसमस" नहीं कहते हैं, तब तक हमारे पास समय में एक विशिष्ट क्षण नहीं है। यदि आप वास्तविक समय को हर बार रिकॉर्ड कर रहे हैं, जब स्लीप को नीचे छुआ जाता है, तो आप टाइप के TIMESTAMP WITH TIME ZONE
बजाय उपयोग करेंगे WITHOUT
।
क्रिसमस के समान ही नए साल की पूर्व संध्या है। जब टाइम्स स्क्वायर बॉल न्यूयॉर्क में गिरती है , तो सिएटल में लोग अभी भी अपनी शैंपेन को ठंडा कर रहे हैं और अपनी पार्टी के सींग तैयार कर रहे हैं । फिर भी हम नव वर्ष के विचार को 2017-01-01 00:00:00
एक के रूप में दर्ज करेंगे TIMESTAMP WITHOUT TIME ZONE
। इसके विपरीत, यदि हम रिकॉर्ड करना चाहते हैं कि गेंद न्यूयॉर्क में कब गिरी, या जब सिएटल में लोगों ने अपने सींग उड़ाए, तो हम इसके बजाय उन वास्तविक क्षणों को रिकॉर्ड करने के लिए TIMESTAMP WITH TIME ZONE
(नहीं WITHOUT
) का उपयोग करेंगे , प्रत्येक तीन घंटे दूसरे से अलग।
Ex: फैक्टरी शिफ्ट्स
एक अन्य उदाहरण एक नीति की रिकॉर्डिंग कर सकता है जिसमें विभिन्न स्थानों पर दीवार-घड़ी का समय शामिल है । कहें कि हमारे पास डेट्रायट, डसेलडोर्फ और दिल्ली में कारखाने हैं। यदि हम कहते हैं कि तीनों कारखानों में पहली पारी सुबह 6 बजे शुरू होती है, तो 11:30 बजे लंच ब्रेक होता है, जो कि रिकॉर्ड किया जा सकता है TIMESTAMP WITHOUT TIME ZONE
। फिर से, यह जानकारी अस्पष्ट तरीके से उपयोगी है, लेकिन समय क्षेत्र में एक विशिष्ट क्षण को इंगित नहीं करता है जब तक हम एक समय क्षेत्र लागू नहीं करते हैं। एक नया दिन पूर्व में पूर्व में होता है। इसलिए दिल्ली कारखाना सुबह 6 बजे खुलने वाला पहला कारखाना होगा। घंटे बाद, डसेलडोर्फ कारखाना अपने सुबह 6 बजे काम करना शुरू करता है। लेकिन डेट्रायट फैक्ट्री वास्तव में छह घंटे बाद तक नहीं खुलेगी, जब इसका एएम 6 बजे होगा।
इस विचार के विपरीत (जब फैक्ट्री शिफ्ट आम तौर पर शुरू होती है) ऐतिहासिक तथ्य के लिए जब प्रत्येक फैक्ट्री वर्कर किसी विशेष दिन पर अपनी शिफ्ट शुरू करने के लिए क्लॉक-इन करता था। घड़ी का समय एक वास्तविक क्षण है, समयरेखा पर एक वास्तविक बिंदु है। इसलिए हम इसे टाइप करने के TIMESTAMP WITH TIME ZONE
बजाय टाइप के कॉलम में रिकॉर्ड करेंगे WITHOUT
।
तो, हाँ, के लिए वैध उपयोग के मामले हैं TIMESTAMP WITHOUT TIME ZONE
। लेकिन व्यावसायिक ऐप के साथ मेरे अनुभव में, वे अपेक्षाकृत दुर्लभ हैं। व्यवसाय में, हम वास्तविक क्षणों के बारे में परवाह करते हैं: वास्तव में चालान कब आया, जब वास्तव में यह अनुबंध लागू होता है, तो उस क्षण में बैंक लेनदेन किस समय निष्पादित होता है। तो ऐसी सामान्य स्थितियों में, हम TIMESTAMP WITH TIME ZONE
प्रकार चाहते हैं ।
अधिक चर्चा के लिए, इसी तरह के प्रश्न के लिए मेरा उत्तर देखें , क्या मुझे पाली के लिए यूटीसी टाइमस्टैम्प या स्थानीय समय संग्रहित करना चाहिए
postgres
ध्यान दें कि पोस्टग्रेज विशेष रूप से टाइमस्टैम्प सम्मिलित करते समय निर्दिष्ट समय क्षेत्र की जानकारी को कभी नहीं बचाता है।
TIMESTAMP WITH TIME ZONE
- इनपुट डेटा के साथ शामिल किसी भी निर्दिष्ट समय क्षेत्र या ऑफसेट का उपयोग यूटीसी और संग्रहीत करने के लिए मूल्य को समायोजित करने के लिए किया जाता है। पारित ज़ोन / ऑफसेट जानकारी तब खारिज कर दी जाती है। के
TIMESTAMP WITH TIME ZONE
रूप में सोचो TIMESTAMP WITH RESPECT FOR TIME ZONE
।
- भारत में इस वर्ष 7 मार्च को दोपहर 12:00 बजे के इनपुट का समय दिन के UTC से साढ़े पांच घंटे घटाकर 6:30 बजे होगा।
TIMESTAMP WITHOUT TIME ZONE
- इनपुट डेटा के साथ शामिल किसी भी निर्दिष्ट समय क्षेत्र या ऑफसेट को पूरी तरह से नजरअंदाज कर दिया जाता है।
- भारत में इस वर्ष 7 मार्च को दोपहर 12:00 बजे का इनपुट इस वर्ष 7 मार्च को 12:00 के रूप में दर्ज किया गया है, जिसमें कोई समायोजन नहीं है।
SQL मानक मुश्किल से डेट-टाइम डेटा प्रकार और व्यवहार के मुद्दों पर छूता है। इसलिए डेट-टाइम की हैंडलिंग में डेटाबेस व्यापक रूप से भिन्न होता है ।