MySQL में, आप SUBTIME()
. का उपयोग कर सकते हैं समय या डेटाटाइम एक्सप्रेशन से समय मान घटाने के लिए फ़ंक्शन।
जिस तरह से यह काम करता है, आप दो तर्क प्रदान करते हैं; पहला समय या डेटाटाइम मान है, और दूसरा समय मान है। SUBTIME()
फ़ंक्शन फिर पहले तर्क से दूसरे तर्क को घटाता है और परिणाम देता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
SUBTIME(expr1,expr2)
जहां expr1
या तो एक समय या डेटाटाइम अभिव्यक्ति हो सकती है, और expr2
एक समय अभिव्यक्ति है।
और इसलिए expr2
expr1
. से घटाया जाता है ।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT SUBTIME('12:35:00', '1:30');
परिणाम:
+-----------------------------+ | SUBTIME('12:35:00', '1:30') | +-----------------------------+ | 11:05:00 | +-----------------------------+
उदाहरण 2 - सेकंड घटाना
इस उदाहरण में, मैं समय मान से कुछ सेकंड घटाता भी हूं।
SELECT SUBTIME('12:35:00', '1:30:30');
परिणाम:
+--------------------------------+ | SUBTIME('12:35:00', '1:30:30') | +--------------------------------+ | 11:04:30 | +--------------------------------+
और हमें वही परिणाम मिलता है, भले ही हम प्रारंभिक समय तर्क से सेकंड भाग को छोड़ दें।
SELECT SUBTIME('12:35', '1:30:30');
परिणाम:
+-----------------------------+ | SUBTIME('12:35', '1:30:30') | +-----------------------------+ | 11:04:30 | +-----------------------------+
उदाहरण 3 - भिन्नात्मक सेकंड
आप भिन्नात्मक सेकंड के भाग को घटा भी सकते हैं।
SELECT SUBTIME('12:35:00.888888', '1:30:30.555555');
परिणाम:
+----------------------------------------------+ | SUBTIME('12:35:00.888888', '1:30:30.555555') | +----------------------------------------------+ | 11:04:30.333333 | +----------------------------------------------+
उदाहरण 4 - नकारात्मक परिणाम
यह आपके परिणाम के लिए एक नकारात्मक मूल्य के साथ समाप्त होने के लिए काफी मान्य है।
SELECT SUBTIME('12:35:00', '20:30:30');
परिणाम:
+---------------------------------+ | SUBTIME('12:35:00', '20:30:30') | +---------------------------------+ | -07:55:30 | +---------------------------------+
उदाहरण 5 - डेटाटाइम मान से घटाएं
इस उदाहरण में मैं डेटाटाइम मान से घटाता हूं (जैसा कि पिछले उदाहरणों की तरह केवल एक समय मान के विपरीत)।
SELECT SUBTIME('2021-01-01 12:35:00', '1:30:30');
परिणाम:
+-------------------------------------------+ | SUBTIME('2021-01-01 12:35:00', '1:30:30') | +-------------------------------------------+ | 2021-01-01 11:04:30 | +-------------------------------------------+
इस मामले में, तारीख का हिस्सा अपरिवर्तित था, क्योंकि दूसरा तर्क इसे प्रभावित करने के लिए पर्याप्त नहीं था।
इस अगले उदाहरण में, मैं दूसरा तर्क बढ़ाता हूं ताकि यह तारीख के हिस्से को प्रभावित करने के लिए पर्याप्त हो।
SELECT SUBTIME('2021-01-01 12:35:00', '100:30:30');
परिणाम:
+---------------------------------------------+ | SUBTIME('2021-01-01 12:35:00', '100:30:30') | +---------------------------------------------+ | 2020-12-28 08:04:30 | +---------------------------------------------+
जैसा कि इस उदाहरण में देखा गया है, समय मान 24 घंटे से कम तक सीमित नहीं हैं (वे -838:59:59 तक हो सकते हैं) से 838:59:59 ।
हालांकि, आप इस तरह की चीजें भी कर सकते हैं:
SELECT SUBTIME('2021-01-01 12:35:00', '4 4:30:30');
परिणाम:
+---------------------------------------------+ | SUBTIME('2021-01-01 12:35:00', '4 4:30:30') | +---------------------------------------------+ | 2020-12-28 08:04:30 | +---------------------------------------------+
उदाहरण 6 - समय की सीमाएं मान
जैसा कि बताया गया है, समय डेटा प्रकार -838:59:59 . के बीच हो सकता है से 838:59:59 . इसका मतलब है कि आप इससे ज्यादा नहीं घटा सकते। इसका मतलब यह भी है कि परिणाम इस सीमा से बाहर नहीं हो सकता है। उदाहरण के लिए, आप ऐसा नहीं कर सकते:
SELECT SUBTIME('12:35:00', '20000000:30:30');
परिणाम:
+---------------------------------------+ | SUBTIME('12:35:00', '20000000:30:30') | +---------------------------------------+ | -826:24:59 | +---------------------------------------+ 1 row in set, 1 warning (0.01 sec)
परिणाम पूरी तरह से गलत है और MySQL एक चेतावनी प्रदर्शित करता है।
लेकिन यह सिर्फ दूसरा तर्क नहीं है जिससे आपको सावधान रहने की जरूरत है। यदि पहला तर्क प्रारंभ में एक नकारात्मक मान है, तो आप भी उसी समस्या का सामना करेंगे:
SELECT SUBTIME('-800:35:00', '50:30:30');
परिणाम:
+-----------------------------------+ | SUBTIME('-800:35:00', '50:30:30') | +-----------------------------------+ | -838:59:59 | +-----------------------------------+ 1 row in set, 1 warning (0.00 sec)