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

Oracle में अंतर b/w TIMESTAMP प्रारूप मान कैसे खोजें?

टाइमस्टैम्प अंकगणित का परिणाम एक INTERVAL डेटाटाइप है। आपके पास वहाँ दूसरे के लिए एक अंतराल दिन है...

यदि आप मिनटों की संख्या चाहते हैं तो एक तरीका यह होगा कि आप EXTRACT() . का उपयोग करें , उदाहरण के लिए:

select extract( minute from interval_difference ) * 60 
        + extract( hour from interval_difference ) * 60
        + extract( day from interval_difference ) * 60 * 24
  from ( select systimestamp - (systimestamp - 1) as interval_difference
           from dual )

वैकल्पिक रूप से आप तिथियों के साथ एक ट्रिक का उपयोग कर सकते हैं:

select sysdate + (interval_difference * 1440) - sysdate
  from (select systimestamp - (systimestamp - 1) as interval_difference
          from dual )

"ट्रिक" संस्करण प्राथमिकता के ऑपरेटर क्रम और दिनांक और टाइमस्टैम्प अंकगणित के बीच अंतर के कारण काम करता है।

प्रारंभ में ऑपरेशन इस तरह दिखता है:

date + ( interval * number ) - date

जैसा कि दस्तावेज़ीकरण में बताया गया है:

<ब्लॉकक्वॉट>

Oracle बाहर के भावों का मूल्यांकन करने से पहले कोष्ठक के अंदर भावों का मूल्यांकन करता है।

तो, पहले ऑपरेशन ने इसे अंतराल को 1,440 से गुणा करने के लिए किया। एक अंतराल, यानी समय की एक असतत अवधि, एक संख्या से गुणा करना समय की एक और असतत अवधि है, डेटाटाइम और अंतराल अंकगणित पर प्रलेखन देखें। तो, इस ऑपरेशन का परिणाम एक अंतराल है, जो हमें छोड़ देता है:

date + interval - date

प्लस ऑपरेटर यहां माइनस पर वरीयता लेता है। इसका कारण यह हो सकता है कि एक अंतराल माइनस ए डेट एक अमान्य ऑपरेशन है, लेकिन दस्तावेज़ीकरण का यह भी अर्थ है कि यह मामला है (बाहर आकर इसे नहीं कहते हैं)। तो, किया गया पहला ऑपरेशन दिनांक + अंतराल है। एक तिथि और अंतराल एक तिथि है। अभी जा रहा हूँ

date - date

प्रलेखन के अनुसार, इसका परिणाम दिनों की संख्या का प्रतिनिधित्व करने वाले पूर्णांक में होता है। हालाँकि, आपने मूल अंतराल को 1,440 से गुणा किया है, इसलिए अब यह 1,440 गुना दिनों की मात्रा का प्रतिनिधित्व करता है जो अन्यथा होता। फिर आपके पास कुछ सेकंड बचे हैं।

यह ध्यान देने योग्य है कि:

<ब्लॉकक्वॉट>

जब अंतराल गणना डेटाटाइम मान लौटाती है, तो परिणाम वास्तविक डेटाटाइम मान होना चाहिए या डेटाबेस एक त्रुटि देता है। उदाहरण के लिए, अगले दो कथन त्रुटियाँ लौटाते हैं:

"चाल" विधि करेगी असफल, शायद ही कभी लेकिन यह अभी भी असफल होगा। हमेशा की तरह इसे ठीक से करना सबसे अच्छा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle क्लाइंट 11 के साथ .NET एप्लिकेशन को परिनियोजित करने के लिए आवश्यक न्यूनतम सेटअप क्या है?

  2. Oracle में, क्या कोई फ़ंक्शन है जो दो तिथियों के बीच अंतर की गणना करता है?

  3. ऑरैकल ड्रॉप इंडेक्स अगर मौजूद है

  4. SQL Oracle काउंटिंग क्लस्टर्स

  5. R . में एक समूह द्वारा एक कॉलम को जोड़ना