MySQL में शामिल दो दिनांक कार्य हैं DATEDIFF()
और TIMEDIFF()
।
दोनों कार्य समान कार्य करते हैं, लेकिन कुछ सार्थक अंतरों के साथ।
निम्न तालिका इन दो कार्यों के बीच अंतर को सारांशित करती है:
DATEDIFF() | TIMEDIFF() |
---|---|
परिणाम को दिनों में मान के रूप में व्यक्त किया जाता है। | परिणाम समय मान के रूप में व्यक्त किया जाता है। |
अपने तर्कों के केवल दिनांक मान की तुलना करता है। | अपने तर्कों के समय मान की तुलना करता है। |
तारीख या तारीख और समय के भाव स्वीकार करता है। | समय या दिनांक और समय के भाव स्वीकार करता है। |
दोनों तर्क भिन्न प्रकार के हो सकते हैं (दिनांक या दिनांक और समय)। | दोनों तर्क एक ही प्रकार के होने चाहिए (या तो समय या दिनांक और समय)। |
उदाहरण 1 - बुनियादी अंतर
यहां एक उदाहरण दिया गया है जो इन कार्यों के बीच मूलभूत अंतर को प्रदर्शित करता है।
सेट @ date1 ='2010-10-11 00:00:00', @date2 ='2010-10-10 00:00:00'; 'DATEDIFF' के रूप में DATEDIFF(@date1, @date2) चुनें, TIMEDIFF(@date1,@date2) 'TIMEDIFF' के रूप में;
परिणाम:
+----------+----------+| दिनांकित | टाइमडिफ |+----------+----------+| 1 | 24:00:00 |+----------+----------+
तो हम देख सकते हैं कि DATEDIFF()
लौटा 1
, जिसका अर्थ है "1 दिन", और TIMEDIFF()
लौटा 24:00:00
जो ठीक 1 दिन का समय प्रतिनिधित्व है।
उदाहरण 2 - समय मान निर्दिष्ट करना
आइए देखें कि क्या होता है यदि हम किसी एक चर का समय मान बढ़ाते हैं।
सेट करें TIMEDIFF(@date1,@date2) 'TIMEDIFF' के रूप में;परिणाम:
+----------+----------+| दिनांकित | टाइमडिफ |+----------+----------+| 1 | 36:15:35 |+----------+----------+
तो DATEDIFF()
पिछले उदाहरण के समान परिणाम देता है। ऐसा इसलिए है क्योंकि यह केवल दिनांक मानों की तुलना करता है (यह किसी भी समय मान को अनदेखा करता है)।
TIMEDIFF()
दूसरी ओर, फ़ंक्शन समय की तुलना करता है, और इसलिए यह अधिक सटीक परिणाम देता है। यह हमें दिखाता है कि दो दिनांक और समय मानों के बीच 36 घंटे, 15 मिनट और 35 सेकंड हैं।
उदाहरण 3 - गलत तर्क प्रकार
जब आप प्रत्येक फ़ंक्शन में गलत तर्क प्रकार पास करते हैं तो क्या होता है इसका एक उदाहरण यहां दिया गया है।
सेट @ date1 ='2010-10-11', @date2 ='2010-10-10', @time1 ='12:15:35', @time2 ='00:00:00'; दिनांकित चुनें (@ date1, @ date2) as 'DATEDIFF date', DATEDIFF(@time1,@time2) as 'DatedIFF Time', TIMEDIFF(@date1,@date2) as 'TIMEDIFF date', TIMEDIFF(@time1,@time2) AS 'TIMEDIFF समय';
परिणाम:
+---------------+----------------------------+-------------- -+---------------+| दिनांकित दिनांक | दिनांकित समय | TIMEDIFF तिथि | TIMEDIFF समय | -+---------------+| 1 | नल | 00:00:00 | 12:15:35 |+---------------+---------------+----------- ----+---------------+
पहला और आखिरी परिणाम ठीक है, क्योंकि सही तर्क प्रकार पारित किए गए थे। हालांकि, मध्य दो परिणामों में गलत डेटा प्रकार पारित किया गया था और इसलिए सही परिणाम की गणना नहीं की जा सकी।
उदाहरण 4 - मिश्रित तर्क प्रकार
यदि आप प्रत्येक फ़ंक्शन को दो अलग-अलग डेटा प्रकार प्रदान करते हैं तो यहां क्या होता है।
सेट @thedate ='2010-10-11', @thetime ='12:15:35', @thedatetime ='2010-10-10 00:00:00'; सेलेक्ट DATEDIFF(@thedate, @thedatetime ) 'DATEDIFF' के रूप में, TIMEDIFF(@thetime, @thedatetime) 'TIMEDIFF' के रूप में;
परिणाम:
+----------+----------+| दिनांकित | टाइमडिफ |+----------+----------+| 1 | NULL |+----------+----------+
तो हम देख सकते हैं कि DATEDIFF()
मिश्रित डेटा प्रकारों को ठीक से संभालता है (जब तक कि वे दिनांक या दिनांक और समय के हों)।
हालांकि, TIMEDIFF()
यह आवश्यक है कि दोनों तर्क एक ही प्रकार के हों, इसलिए हमें NULL
मिलता है , भले ही दोनों तर्क एक प्रकार के हैं जो फ़ंक्शन का समर्थन करता है (समय और दिनांक-और-समय)।
हम पुष्टि कर सकते हैं कि दोनों प्रकार वास्तव में निम्नलिखित उदाहरण के साथ इस फ़ंक्शन द्वारा समर्थित हैं:
सेट @thetime1 ='12:15:35', @thetime2 ='10:15:35', @thedatetime1 ='2010-10-12 00:00:00', @thedatetime2 ='2010-10- 10 00:00:00'; TIMEDIFF(@thetime1, @thetime2) 'समय' के रूप में, TIMEDIFF(@thedatetime1, @thedatetime2) 'डेटाटाइम' के रूप में चुनें;
परिणाम:
+----------+----------+| समय | डेटटाइम |+----------+----------+| 02:00:00 | 48:00:00 |+----------+----------+