PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL/JDBC और TIMESTAMP बनाम TIMESTAMPTZ

आम तौर पर TIMESTAMPTZ का उपयोग करें

पोस्टग्रेज विशेषज्ञ डेविड ई. व्हीलर की एक ब्लॉग पोस्ट में सलाह यहां दी गई है, जिसका शीर्षक यह सब कहता है:
हमेशा टाइम ज़ोन के साथ टाइमस्टैम्प का उपयोग करें (TIMESTAMPTZ)

यदि आप वास्तविक क्षणों, समयरेखा पर विशिष्ट बिंदुओं को ट्रैक कर रहे हैं, तो TIMESTAMP WITH TIME ZONE का उपयोग करें .

एक अपवाद:विभाजन

तकनीकी सीमाओं के कारण टाइमस्टैम्प पर विभाजन करते समय व्हीलर का एकमात्र अपवाद है। एक दुर्लभ अपवाद हम में से अधिकांश के लिए।

विभाजन के बारे में जानकारी के लिए, देखें doc और देखें विकी

गलत नाम

डेटा प्रकार नाम timestamp with time zone और timestamp without time zone मिथ्या नाम हैं। दोनों . में मामलों में दिनांक-समय मान UTC (कोई समय क्षेत्र ऑफ़सेट नहीं) में संग्रहीत किया जाता है। वह पिछला वाक्य फिर से पढ़ें। यूटीसी, हमेशा। "समय क्षेत्र के साथ" वाक्यांश का अर्थ है "समय क्षेत्र पर ध्यान देने के साथ", न कि "इस मान के साथ समय क्षेत्र को संग्रहीत करें"। प्रकारों के बीच का अंतर यह है कि क्या कोई समय क्षेत्र या तो भंडारण (INSERT या UPDATE) या पुनर्प्राप्ति (चयन क्वेरी) के दौरान लागू किया जाना चाहिए। (यह व्यवहार Postgres के लिए वर्णित है -- अन्य डेटाबेस व्यापक रूप से . में भिन्न हैं इस संबंध में।)

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

पढ़ें दस्तावेज़ ध्यान से, और अपनी समझ को स्पष्ट करने के लिए थोड़ा प्रयोग करें।

अनज़ोन्ड

यदि आप किसी विशिष्ट क्षण के बजाय संभावित समय के सामान्य विचार को संग्रहीत करना चाहते हैं, तो दूसरे प्रकार का उपयोग करें, TIMESTAMP WITHOUT TIME ZONE .

उदाहरण के लिए, क्रिसमस इस साल 25 दिसंबर, 2017 के पहले क्षण में शुरू होगा। वह 2017-12-25T 00:00:00 होगा। समय क्षेत्र का कोई संकेतक नहीं है और न ही ऑफसेट-से-यूटीसी। यह मान संभावित क्षणों के बारे में केवल एक अस्पष्ट विचार है। इसका कोई मतलब नहीं है जब तक हम एक समय क्षेत्र (या ऑफसेट) लागू नहीं करते। इसलिए हम इसे TIMESTAMP WITHOUT TIME ZONE . का उपयोग करके स्टोर करते हैं ।

सांता के विशेष कार्यक्रम रसद विभाग . के कर्मचारी कल्पित बौने समय क्षेत्रों को उनकी नियोजन प्रक्रिया के भाग के रूप में लागू करें। सबसे पुराना समय क्षेत्र वर्तमान में Pacific/Kiribati है , यूटीसी से 14 घंटे आगे। कल्पित बौने वहां सांता के पहले आगमन का कार्यक्रम निर्धारित करते हैं। कल्पित बौने हिरन को अन्य समय क्षेत्रों में ले जाने के लिए एक उड़ान योजना निर्धारित करते हैं, जहां आधी रात कुछ ही समय बाद आती है, जैसे कि Pacific/Auckland . जैसे ही प्रत्येक क्षेत्र की मध्यरात्रि आती है, वे पश्चिम की ओर बढ़ते रहते हैं। घंटे बाद Asia/Kolkata . में , अभी भी बाद में Europe/Paris . में , और घंटे बाद America/Montreal . में और इसी तरह।

इन विशिष्ट डिलीवरी क्षणों में से प्रत्येक को कल्पित बौने WITH TIME ZONE . का उपयोग करके रिकॉर्ड करेंगे , जबकि क्रिसमस का वह सामान्य विचार WITHOUT TIME ZONE . के रूप में संग्रहीत किया जाएगा .

WITHOUT TIME ZONE के लिए व्यावसायिक ऐप्स में एक और उपयोग नियुक्तियों को कई हफ्तों से अधिक समय से निर्धारित कर रहा है। दुनिया भर के राजनेताओं के पास घड़ी के साथ खिलवाड़ करने और समय क्षेत्र के नियमों को फिर से परिभाषित करने की एक अकथनीय प्रवृत्ति है। वे डेलाइट सेविंग टाइम (डीएसटी) में शामिल हो जाते हैं, डीएसटी छोड़ देते हैं, एक अलग तिथि पर डीएसटी शुरू करते हैं, या एक अलग तिथि पर डीएसटी समाप्त करते हैं, या अपनी घड़ियों को 15 मिनट या आधे घंटे में बदल देते हैं। ये सभी पिछले कई वर्षों में तुर्की, संयुक्त राज्य अमेरिका, रूस, वेनेजुएला और अन्य लोगों द्वारा किए गए हैं।

राजनेता अक्सर ये बदलाव थोड़े पूर्वाभास के साथ करते हैं। इसलिए यदि आप 13:00 बजे छह महीने के लिए दंत चिकित्सा नियुक्ति का समय निर्धारित कर रहे हैं, तो इसे संभवतः TIMESTAMP WITHOUT TIME ZONE के रूप में संग्रहीत किया जाना चाहिए या अन्यथा राजनेता प्रभावी रूप से आपकी नियुक्ति को दोपहर, या दोपहर 2 बजे, या 13:30 में बदल सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. माइक्रोनॉट डेटा देशी-छवि:प्रकार का कोई बीन [io.micronaut.data.operations.PrimaryRepositoryOperations] मौजूद नहीं है

  2. Django __unaccent और __search लुकअप का संयोजन

  3. तालिका में शामिल होने के लिए अद्वितीय बहु-स्तंभ अनुक्रमणिका पोस्टग्रेज करता है

  4. PostgreSQL में एक तिथि से दिन का नाम प्राप्त करें

  5. दो SQL लेफ्ट जॉइन गलत परिणाम देते हैं