Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में DATEDIFF() का उपयोग करके दो DATETIME कॉलम्स के बीच अंतर निकालना

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)
  1. - MySQL में TIMESTAMPDIFF का उपयोग करके दो DATETIME मानों के बीच अंतर ज्ञात करें

    MySQL में दो DATETIME मानों के बीच अंतर की गणना MySQL में TIMESTAMPDIFF() फ़ंक्शन दो डेटाइम मानों के बीच निर्दिष्ट इकाई (सेकंड, मिनट, घंटे, दिन, आदि) में अंतर लौटाता है। DATEDIFF() के विपरीत जो केवल दिन लौटाता है, TIMESTAMPDIFF लचीला है। टेबल बनाना ); Query OK, 0 rows affected (0.86 sec) डेटा डाल

  1. - MySQL में TIMESTAMPDIFF से दो दिनांकों के बीच महीनों का अंतर निकालें

    MySQL का TIMESTAMPDIFF() फ़ंक्शन दो दिनांक/समय मानों के बीच निर्दिष्ट इकाई में अंतर की गणना करता है। सिंटैक्स TIMESTAMPDIFF(इकाई, दिनांक1, दिनांक2) इकाइयां: MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR उदाहरण: महीनों में अंतर 1. टेबल बनाएं ); 2. डेटा डालें INSERT INTO De

  1. - MySQL में != NULL और IS NOT NULL का अंतर

    NULL तुलना: != NULL बनाम IS NOT NULL MySQL में किसी मान की तुलना !=NULL से करने पर परिणाम NULL होता है, इसलिए !=NULL अर्थहीन है। सही तरीका IS NOT NULL है। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1970 ( Value int ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTabl