MySQL DATEDIFF() के साथ दो दिनांक कॉलम के बीच अंतर
एक ही पंक्ति में दो दिनांक कॉलम के बीच दिनों की संख्या की गणना करने के लिए, सीधे उन कॉलम पर DATEDIFF() का उपयोग करें। यह रोजगार अवधि, परियोजना अवधि, किराया अवधि आदि के लिए उपयोगी है।
उदाहरण: कर्मचारी कार्य दिवस गणना
mysql> CREATE TABLE DemoTable1471 (
-> EmployeeJoiningDate DATE,
-> EmployeeRelievingDate DATE
-> );
Query OK, 0 rows affected (0.57 sec)
mysql> INSERT INTO DemoTable1471 VALUES
-> ('2018-06-21', '2018-12-21'),
-> ('2017-01-19', '2019-01-31'),
-> ('2015-12-31', '2016-03-01');
Query OK, 3 rows affected (0.10 sec)
mysql> SELECT * FROM DemoTable1471;
+---------------------+-----------------------+
| EmployeeJoiningDate | EmployeeRelievingDate |
+---------------------+-----------------------+
| 2018-06-21 | 2018-12-21 |
| 2017-01-19 | 2019-01-31 |
| 2015-12-31 | 2016-03-01 |
+---------------------+-----------------------+
3 rows in set (0.00 sec)
DATEDIFF() क्वेरी
mysql> SELECT DATEDIFF(EmployeeRelievingDate, EmployeeJoiningDate) AS EmployeeWorkDays
-> FROM DemoTable1471;
परिणाम
+------------------+ | EmployeeWorkDays | +------------------+ | 183 | | 742 | | 61 | +------------------+ 3 rows in set (0.00 sec)
गणना विवरण
| ज्वाइनिंग | रिलीविंग | दिन | व्याख्या |
|---|---|---|---|
| 2018-06-21 | 2018-12-21 | 183 | 6 महीने ठीक |
| 2017-01-19 | 2019-01-31 | 742 | ~2 वर्ष + 12 दिन |
| 2015-12-31 | 2016-03-01 | 61 | जनवरी(31) + फरवरी(29 लीप) + 1 |
DATEDIFF() व्यवहार
DATEDIFF(date1, date2)= date1 - date2 (दिनों में)- परिणाम चिन्हित: भविष्य की तिथि पहले = सकारात्मक
- केवल दिनांक भाग मानता है, समय अनदेखा करता है
- NULL यदि कोई तर्क NULL है
संबंधित फ़ंक्शन
-- अधिक सटीक इकाइयों के लिए TIMESTAMPDIFF
SELECT TIMESTAMPDIFF(DAY, JoiningDate, RelievingDate) AS days,
TIMESTAMPDIFF(MONTH, JoiningDate, RelievingDate) AS months,
TIMESTAMPDIFF(YEAR, JoiningDate, RelievingDate) AS years
FROM DemoTable1471;
-- वर्ष-महीना-दिन ब्रेकडाउन
SELECT
FLOOR(DATEDIFF(RelievingDate, JoiningDate) / 365) AS years,
FLOOR((DATEDIFF(RelievingDate, JoiningDate) % 365) / 30) AS months,
DATEDIFF(RelievingDate, JoiningDate) % 30 AS days
FROM DemoTable1471;