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

SQL- TIMEZONE के साथ TIMESTAMP, DATE और TIMESTAMP के बीच अंतर?

डेटा प्रकार और उनके बीच अंतर दस्तावेज़ीकरण में हैं . संक्षिप्त संस्करण है:

  • बिना समय क्षेत्र समर्थन के DATE की सटीकता एक सेकंड तक सीमित है;
  • TIMESTAMP की सटीकता एक सेकंड के अंश तक है (नौ दशमलव स्थानों तक, लेकिन आपका ऑपरेटिंग सिस्टम इसे भी प्रभावित करता है), फिर भी बिना किसी समय क्षेत्र समर्थन के;
  • टाइम ज़ोन के साथ टाइमस्टैम्प में टाइमस्टैम्प के समान सटीकता है, लेकिन समय क्षेत्र का समर्थन भी है, जैसा कि नाम से पता चलता है;
  • स्थानीय समय क्षेत्र के साथ टाइमस्टैम्प, बनाने/क्वेरी करने वाले सत्र के स्थानीय समय क्षेत्र में और उससे संग्रहीत मान को समायोजित करता है।

आपको यह लेख मिल सकता है दिलचस्प भी।

जब भी आप अपने डेटाबेस में संग्रहीत डेटाटाइम मानों की तुलना कर रहे हों तो आपको तुलना करने के लिए उसी डेटाटाइप के मानों का उपयोग करना चाहिए। आप तुलना के लिए कॉलम में प्रत्येक मान को परिवर्तित नहीं करना चाहते हैं, खासकर यदि कॉलम अनुक्रमित है। यदि आपके पास DATE कॉलम है तो DATE से तुलना करें - स्ट्रिंग के रूप में तुलना न करें, और निहित रूपांतरण एक तार का। जब आप करते हैं:

WHERE date_col BETWEEN '01-JAN-1990' AND '01-JAN-2000'

आप अपने NLS_DATE_FORMAT पर DD-MON-YYYY होने और आपके NLS_DATE_LANGUAGE के अंग्रेज़ी होने पर भरोसा कर रहे हैं। यदि कोई अन्य व्यक्ति उसी क्वेरी को किसी अन्य सत्र में चलाता है, तो उनकी सेटिंग के कारण क्वेरी विफल हो सकती है (या कुछ मामलों में, गलत परिणाम दे सकते हैं, जो इससे भी बदतर हो सकता है)। भाषा की समस्या से बचने के लिए नामों के बजाय महीने की संख्या का उपयोग करना बेहतर है। यदि आपके पास तुलना करने के लिए एक स्ट्रिंग चर है, तो आपको <का उपयोग करना चाहिए। कोड>TO_DATE() एक निश्चित ज्ञात प्रारूप मास्क का उपयोग करके स्ट्रिंग को DATE में बदलने के लिए - NLS पर भरोसा न करें। यदि आपके पास एक निश्चित मान है तो आप वही कर सकते हैं, या आप तिथि शाब्दिक , जो छोटा और स्पष्ट है।

आपके द्वारा उपयोग किए गए प्रारूप के साथ आप उन पंक्तियों को भी शामिल कर रहे हैं, जिनका कॉलम 1 जनवरी 2000 की मध्यरात्रि पर सेट है, लेकिन उस दिन बाद में नहीं। हो सकता है कि आप यही चाहते हों, लेकिन सुनिश्चित करें कि आप समझते हैं कि कैसे बीच काम करता है। यदि आप वास्तव में 31 दिसंबर 1999 को किसी भी समय सहित उस दशक के भीतर की तारीखों की तलाश कर रहे हैं, तो आप इसका उपयोग कर सकते हैं:

WHERE date_col >= DATE '1990-01-01' AND date_col < DATE '2000-01-01'

टाइमस्टैम्प के लिए आप TO_TIMESTAMP()<का उपयोग कर सकते हैं /कोड> या एक टाइमस्टैम्प शाब्दिक:

WHERE ts_col >= TIMESTAMP '1990-01-01 00:00:00'
AND ts_col < TIMESTAMP '2000-01-01 00:00:00'

समय क्षेत्र वाले टाइमस्टैम्प के लिए आप TO_TIMESTAMP_TZ का उपयोग कर सकते हैं () या एक टाइमस्टैम्प शाब्दिक, नाम समय क्षेत्र क्षेत्र के साथ:

WHERE tstz_col >= TIMESTAMP '1990-01-01 00:00:00 America/New_York'
AND tstz_col < TIMESTAMP '2000-01-01 00:00:00 America/New_York'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका में सम्मिलित करें तालिका a और तालिका b से चुनें जहां

  2. ओरेकल में मौजूदा खाते के समान विशेषाधिकारों के साथ स्कीमा को कैसे दोहराएं?

  3. Oracle में संगतता स्तर की जाँच करने के 2 तरीके (SQLcl और SQL*Plus)

  4. Oracle संग्रहीत कार्यविधि के भीतर किसी अन्य उपयोगकर्ता की तालिका तक पहुँचना

  5. अपवाद उठाए जाने पर Oracle में निरंतर सम्मिलित करना