समस्या:
आपके पास दिनांक प्रकार के दो कॉलम हैं और आप उनके बीच के अंतर की गणना करना चाहते हैं।
उदाहरण:
travel
तालिका, तीन कॉलम हैं:id
, departure
, और arrival
. आप arrival
. के बीच अंतर की गणना करना चाहेंगे और departure
, या arrival
. से दिनों की संख्या समावेशी रूप से प्रस्थान करने के लिए।
travel
तालिका इस तरह दिखती है:
id | प्रस्थान | आगमन |
---|---|---|
1 | 2018-03-25 | 2018-04-05 |
2 | 2019-09-12 | 2019-09-23 |
3 | 2018-07-14 | 2018-07-14 |
4 | 2018-01-05 | 2018-01-08 |
समाधान:
SELECT id, departure, arrival, DATEDIFF(arrival, departure) AS date_difference, DATEDIFF(arrival, departure) + 1 AS days_inclusive FROM travel;
नतीजा यह है:
id | प्रस्थान | आगमन | <वें शैली="पृष्ठभूमि-रंग:#cecece">दिनांक_अंतरdays_inclusive | |
---|---|---|---|---|
1 | 2018-03-25 | 2018-04-05 | 11 | 12 |
2 | 2019-09-12 | 2019-09-23 | 11 | 12 |
3 | 2018-07-14 | 2018-07-14 | 0 | 1 |
4 | 2018-01-05 | 2018-01-08 | 3 | 4 |
चर्चा:
MySQL में तिथियों के बीच अंतर की गणना करने के लिए, DATEDIFF(enddate, startdate)
. का उपयोग करें समारोह। startdate
. के बीच का अंतर और enddate
दिनों में व्यक्त किया जाता है। इस मामले में, enddate
arrival
है और startdate
है departure
।
अधिकांश मामलों में, हालांकि, आप वास्तव में पहली तारीख से दूसरी तारीख तक सहित दिनों की संख्या चाहते हैं। . आपको अंतर में 1 दिन जोड़ना होगा:DATEDIFF(arrival, departure) + 1
।