समस्या:
आपके पास दिनांक प्रकार के दो कॉलम हैं और आप उनके बीच के अंतर की गणना करना चाहते हैं।
उदाहरण:
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(day, departure, arrival) AS date_difference, DATEDIFF(day, departure, arrival) + 1 AS days_inclusive FROM travel;
नतीजा यह है:
id | प्रस्थान | आगमन | <वें शैली="पृष्ठभूमि-रंग:#cecece">दिनांक_अंतर <वें शैली="पृष्ठभूमि-रंग:#cecece">दिन||
---|---|---|---|---|
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 |
चर्चा:
तिथियों के बीच अंतर जानने के लिए, DATEDIFF(datepart, startdate, enddate)
का उपयोग करें समारोह। datepart
तर्क दिनांक/दिनांक समय के उस भाग को परिभाषित करता है जिसमें आप अंतर व्यक्त करना चाहते हैं। इसका मान year
. हो सकता है , quarter
, month
, day
, minute
, आदि। इस उदाहरण में, आप दिनों में अंतर व्यक्त करना चाहते हैं, इसलिए पहला तर्क दिन है। दो अन्य तर्क हैं जिस तारीख से आप गिनती शुरू करते हैं और वह तारीख जब आप गिनती बंद करते हैं - इस मामले में, departure
और arrival
, क्रमशः।
ज्यादातर मामलों में, आप वास्तव में पहली तारीख से दूसरी तारीख तक सहित दिनों की संख्या चाहते हैं। . फिर आपको दिनों के अंतर में 1 दिन जोड़ना होगा:DATEDIFF(day, departure, arrival) + 1
।