MySQL में दो DATETIME कॉलम्स के बीच दिनों का अंतर निकालने के लिए DATEDIFF() फ़ंक्शन का उपयोग करें। यह केवल तिथि भाग पर विचार करता है, समय भाग को अनदेखा करता है।
सिंटैक्स
DATEDIFF(date1, date2) -- date1 - date2 के दिनों में अंतर
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE DemoTable (DOB DATETIME, CurrentDate DATETIME);
Query OK, 0 rows affected (0.59 sec)
mysql> INSERT INTO DemoTable VALUES
('1995-01-21', CURDATE()),
('1998-11-01', CURDATE()),
('2000-10-24', CURDATE());
Query OK, 3 rows affected (0.20 sec)
2. सभी रिकॉर्ड्स देखें (मान लें CURDATE() = '2019-07-08')
mysql> SELECT * FROM DemoTable; +---------------------+---------------------+ | DOB | CurrentDate | +---------------------+---------------------+ | 1995-01-21 00:00:00 | 2019-07-08 00:00:00 | | 1998-11-01 00:00:00 | 2019-07-08 00:00:00 | | 2000-10-24 00:00:00 | 2019-07-08 00:00:00 | +---------------------+---------------------+ 3 rows in set (0.00 sec)
4. 23 वर्ष से अधिक उम्र के लोग ढूंढें
mysql> SELECT * FROM DemoTable WHERE (DATEDIFF(CurrentDate, DOB) / 365) > 23; +---------------------+---------------------+ | DOB | CurrentDate | +---------------------+---------------------+ | 1995-01-21 00:00:00 | 2019-07-08 00:00:00 | +---------------------+---------------------+ 1 row in set (0.00 sec)
DATEDIFF व्यवहार
- केवल तिथि भाग पर विचार करता है (समय अनदेखा)
DATEDIFF('2019-07-08 23:59:59', '2019-07-08 00:00:01') = 0- परिणाम पूर्णांक (दिन)
- ऋणात्मक यदि date1 < date2
अधिक सटीक आयु गणना
YEAR() अंतर (सरल लेकिन कम सटीक)
SELECT YEAR(CurrentDate) - YEAR(DOB) -
(DATE_FORMAT(CurrentDate, '%m-%d') < DATE_FORMAT(DOB, '%m-%d')) AS age
FROM DemoTable;
TIMESTAMPDIFF (सटीक, अनुशंसित)
SELECT
TIMESTAMPDIFF(YEAR, DOB, CurrentDate) AS age_years,
TIMESTAMPDIFF(MONTH, DOB, CurrentDate) AS age_months,
TIMESTAMPDIFF(DAY, DOB, CurrentDate) AS age_days
FROM DemoTable;
DATEDIFF vs TIMESTAMPDIFF
| फ़ंक्शन | इकाई | सटीकता | उपयोग |
|---|---|---|---|
DATEDIFF(d1, d2) | दिन | केवल तिथि भाग | सरल दिन अंतर |
TIMESTAMPDIFF(unit, d1, d2) | निर्दिष्ट (YEAR, MONTH, DAY, HOUR, आदि) | पूर्ण सटीकता | आयु, अवधि, बिलिंग |
TIMEDIFF(t1, t2) | समय (HH:MM:SS) | सेकंड तक | एक ही दिन के भीतर |
संबंधित गणनाएं
-- दिनों में अंतर (निरपेक्ष) ABS(DATEDIFF(date1, date2)) -- सप्ताहों में FLOOR(DATEDIFF(date1, date2) / 7) -- महीनों में (सन्निकट) FLOOR(DATEDIFF(date1, date2) / 30.44) -- वर्षों में (सन्निकट) FLOOR(DATEDIFF(date1, date2) / 365.25)