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

क्या मुझे टाइमज़ोन को पोस्टग्रेज़ और जेडीबीसी के लिए टाइमस्टैम्प से अलग से स्टोर करना चाहिए?

जब आप timestamp with time zone स्टोर करते हैं (timestamptz ) इसे डीबी में भंडारण के लिए यूटीसी में परिवर्तित कर दिया गया है। जब पुनर्प्राप्त किया जाता है, तो यह क्लाइंट के वर्तमान समय क्षेत्र में परिवर्तित हो जाता है, न कि उस समय क्षेत्र में, जिसमें वह मूल रूप से था। यह मूल रूप से समय का एक बिंदु है।

timestamp without time zone . भी है (timestamp ) यह रूपांतरण के अधीन नहीं है, लेकिन नहीं है इसके साथ टाइमस्टैम्प ले जाएं। अगर आप timestamp स्टोर करते हैं अपने क्लाइंट टाइम ज़ोन को यूटीसी पर सेट करने के बाद, क्लाइंट टाइम ज़ोन '+08:00' होने पर इसे पुनः प्राप्त करें, आपको वही मान मिलता है। आप जो चाहते हैं उसका आधा है, इसमें यह कच्चे समय के मूल्य को बरकरार रखता है।

नाम और व्यवहार भयानक और भ्रमित करने वाले हैं, लेकिन SQL मानक द्वारा निर्धारित किए गए हैं।

यदि आप किसी विशेष समय क्षेत्र में समय में एक बिंदु रिकॉर्ड करना चाहते हैं तो आपको समय क्षेत्र को अलग से संग्रहित करना होगा। मैं इसे INTERVAL . के रूप में संग्रहीत करने की अनुशंसा करता हूं एक CHECK के साथ इसे colname BETWEEN INTERVAL '-12' HOUR + INTERVAL '1' SECOND AND INTERVAL '12' HOUR तक सीमित करने वाली बाधा . वह परिभाषा -12:00 को अस्वीकार करती है और +12:00 को स्वीकार करती है; मुझे पूरा यकीन नहीं है कि यह सही है, इसलिए जांचें।

आप या तो timestamp स्टोर कर सकते हैं उस समय क्षेत्र में स्थानीय समय का (मैं शायद क्या करूँगा), या timestamptz स्टोर करें यूटीसी समय जब घटना हुई और एक ऑफसेट जो आपको इसे स्थानीय समय में बदलने की सुविधा देता है।

या तो जेडीबीसी के लिए ठीक काम करेगा। जेपीए के लिए, यह इस बात पर निर्भर करेगा कि आपका प्रदाता कितनी अच्छी तरह समझता है और अंतराल प्रकारों को मैप करता है। आदर्श रूप से आप अपनी इकाई में एक क्षणिक उत्पन्न फ़ील्ड चाहते हैं जो उस कैलेंडर उदाहरण का पुनर्निर्माण करता है जिसे आप timestamp का उपयोग करके चाहते हैं और interval डेटाबेस में संग्रहीत।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql:कुछ प्रकार के अंकों के बीच रिक्त स्थान निकालना

  2. org.postgresql.util.PSQLException:स्तंभ अनुक्रमणिका सीमा से बाहर है:3, स्तंभों की संख्या:2

  3. Postgresql में दो तिथियों के बीच अंतर

  4. रेगेक्स एक स्ट्रिंग में एकाधिक वर्णों की सभी घटनाओं को हटा देता है

  5. Psql में विदेशी कुंजी बाधाओं के साथ एक तालिका की संरचना को दूसरे में कैसे कॉपी करें?