टाइमस्टैम्प अंकगणित का परिणाम एक 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 गुना दिनों की मात्रा का प्रतिनिधित्व करता है जो अन्यथा होता। फिर आपके पास कुछ सेकंड बचे हैं।
यह ध्यान देने योग्य है कि:
<ब्लॉकक्वॉट>जब अंतराल गणना डेटाटाइम मान लौटाती है, तो परिणाम वास्तविक डेटाटाइम मान होना चाहिए या डेटाबेस एक त्रुटि देता है। उदाहरण के लिए, अगले दो कथन त्रुटियाँ लौटाते हैं:
"चाल" विधि करेगी असफल, शायद ही कभी लेकिन यह अभी भी असफल होगा। हमेशा की तरह इसे ठीक से करना सबसे अच्छा है।