मारियाडीबी के पास एक HOUR()
है फ़ंक्शन जो घंटे के हिस्से को समय मान से निकालता है। MariaDB में एक EXTRACT()
भी है फ़ंक्शन जो समय मान से घंटे के हिस्से को भी निकाल सकता है।
हालाँकि, ये फ़ंक्शन हमेशा समान परिणाम नहीं देते हैं।
HOUR()
. के बीच अंतर देखने के लिए पढ़ें और EXTRACT(HOUR FROM ...)
मारियाडीबी में।
अंतर
HOUR()
और EXTRACT(HOUR FROM ...)
दोनों एक ही मान लौटाते हैं जब समय अभिव्यक्ति एक समय-समय की अभिव्यक्ति होती है। यानी, अगर घंटे का हिस्सा 0
. के बीच है और 23
, फिर वे वही परिणाम लौटाते हैं।
अंतर तब प्रकट होता है जब घंटे का हिस्सा 23
. से बड़ा होता है .
TIME
मान '-838:59:59.999999'
. की श्रेणी में हो सकते हैं करने के लिए '838:59:59.999999'
, लेकिन एक समय-समय का मान केवल 0
. के बीच हो सकता है और 23
।
अगर टाइम एक्सप्रेशन 0
. के बाहर है और 23
रेंज:
HOUR()
एक्सप्रेशन से वास्तविक घंटे का हिस्सा लौटाता है (जब तक यह'-838:59:59.999999'
की सीमा के भीतर है करने के लिए'838:59:59.999999'
- यदि इस सीमा के बाहर, यह838
लौटाता है )EXTRACT(HOUR FROM ...)
0
. के बीच एक मान देता है और23
. यदि घंटा इस सीमा से बाहर है,EXTRACT()
0
. के माध्यम से पुनरावृति करेगा और23
0
. के बीच मान वापस करने के लिए जितनी बार आवश्यक हो उतनी बार और23
।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT
HOUR('24:00:00'),
EXTRACT(HOUR FROM '24:00:00');
परिणाम:
+------------------+-------------------------------+ | HOUR('24:00:00') | EXTRACT(HOUR FROM '24:00:00') | +------------------+-------------------------------+ | 24 | 0 | +------------------+-------------------------------+
HOUR()
फ़ंक्शन प्रदान किए गए वास्तविक घंटे को लौटाता है, जबकि EXTRACT()
रिटर्न 0
. ऐसा इसलिए है क्योंकि 24
23
. से अधिक है , जो उच्चतम मूल्य है EXTRACT()
घंटे के हिस्से के लिए वापस आ जाएगा। इस मामले में, EXTRACT()
0
. से शुरू करते हुए फिर से गिनती शुरू करता है .
यह जितनी बार आवश्यकता होगी उतनी बार ऐसा करता रहेगा, ताकि परिणाम हमेशा 0
. के बीच रहे और 23
.
घंटे के बड़े हिस्से के साथ एक और उदाहरण यहां दिया गया है:
SELECT
HOUR('742:00:00'),
EXTRACT(HOUR FROM '742:00:00');
परिणाम:
+-------------------+--------------------------------+ | HOUR('742:00:00') | EXTRACT(HOUR FROM '742:00:00') | +-------------------+--------------------------------+ | 742 | 22 | +-------------------+--------------------------------+