2010-03-22 13 views
112

मुझे mysql पर दो तिथियों के भीतर निहित दिनों की संख्या प्राप्त करने की आवश्यकता है।mysql पर दो तिथियों के बीच अंतर के दिनों की संख्या कैसे प्राप्त करें?

उदाहरण के लिए: तिथि में चेक 2010/12/04 की जाँच करें दिनांक 15-04-2010 और दिन का अंतर 3

उत्तर

171

क्या DATEDIFF समारोह के बारे में हो सकता है?

पुस्तिका के पृष्ठ का हवाला देते हुए:

DateDiff() रिटर्न expr1 - expr2 दूसरे के तारीख से दिन में एक मूल्य के रूप में व्यक्त किया। expr1 और expr2 दिनांक या दिनांक-समय-समय पर अभिव्यक्तियां हैं। केवल मान की तारीख भागों गणना में उपयोग किया जाता है


आपके मामले में, आप उपयोग करेंगे:

mysql> select datediff('2010-04-15', '2010-04-12'); 
+--------------------------------------+ 
| datediff('2010-04-15', '2010-04-12') | 
+--------------------------------------+ 
|         3 | 
+--------------------------------------+ 
1 row in set (0,00 sec) 

लेकिन ध्यान दें दिनांकों YYYY-MM-DD के रूप में लिखा जाना चाहिए, और नहीं DD-MM-YYYY जैसे आपने पोस्ट किया था।

+0

हाँ जब मैं प्रश्न बनाता हूं तो मैं डेट प्रारूप के बारे में भूल गया; पी धन्यवाद – Audel

+2

पीएस वाई वाई वाई वाई-एमएम-डीडी आईएसओ 8601 मानक है, इसलिए हर किसी को इसका इस्तेमाल करना चाहिए। बहुत व्यावहारिक। –

+0

** नोट **: पहला तर्क 'datediff()' विधि के लिए दूसरे तर्क से अधिक होना चाहिए, अन्यथा यह नकारात्मक मान वापस कर देगा। – Shashanth

14

DATEDIFF() फ़ंक्शन का उपयोग करें। दस्तावेज़ से

उदाहरण:

SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30'); 
    -> 1 
4

मैं TIMESTAMPDIFF पसंद करते हैं क्योंकि आप आसानी से इकाई बदल सकते हैं हो सकता है आवश्यकता नहीं है।

25

नोट करें कि आप पूर्ण 24 घंटे दिन 2 तिथियों के बीच गिनना चाहते हैं, डेटीफ आपके लिए गलत मान वापस कर सकता है।

प्रलेखन के रूप में कहा गया है:

केवल मान की तारीख भागों गणना में इस्तेमाल कर रहे हैं।

जो

select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')

रिटर्न 1 के बजाय उम्मीद 0.

समाधान select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00'); (नोट DateDiff की तुलना में बहस के विपरीत क्रम) उपयोग कर रहा है में परिणाम

कुछ उदाहरण:

  • select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00'); रिटर्न 0
  • select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00'); रिटर्न 1
  • select timestampdiff(DAY, '2016-04-13 11:00:00', now());रिटर्न कितने पूर्ण 24 घंटों दिनों 2016/04/13 11:00 के बाद से पारित कर दिया है : 00 अब तक

उम्मीद है कि यह किसी की मदद करेगा, क्योंकि पहले यह स्पष्ट नहीं है कि डेडिफ मूल्यों को वापस क्यों लाता है जो अप्रत्याशित या गलत प्रतीत होता है।

संबंधित मुद्दे