TIMESTAMPDIFF() फंक्शन का उपयोग
MySQL में जन्म तारीख से वर्तमान उम्र (वर्षों में) निकालने के लिए TIMESTAMPDIFF() फंक्शन सबसे सटीक तरीका है।
सिंटैक्स
SELECT TIMESTAMPDIFF(YEAR, yourDateColumn, NOW()) AS Age FROM yourTableName;
उदाहरण
1. टेबल बनाना
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentDOB DATETIME
);
Query OK, 0 rows affected (0.61 sec)
2. जन्म तारीख डालना
mysql> INSERT INTO DemoTable(StudentDOB) VALUES('1996-01-12');
mysql> INSERT INTO DemoTable(StudentDOB) VALUES('1990-12-31');
mysql> INSERT INTO DemoTable(StudentDOB) VALUES('1989-04-01');
mysql> INSERT INTO DemoTable(StudentDOB) VALUES('2000-06-17');
3. सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable;
+-----------+---------------------+ | StudentId | StudentDOB | +-----------+---------------------+ | 1 | 1996-01-12 00:00:00 | | 2 | 1990-12-31 00:00:00 | | 3 | 1989-04-01 00:00:00 | | 4 | 2000-06-17 00:00:00 | +-----------+---------------------+ 4 rows in set (0.00 sec)
4. उम्र कैलकुलेट करना
mysql> SELECT TIMESTAMPDIFF(YEAR, StudentDOB, NOW()) AS Age FROM DemoTable;
+------+ | Age | +------+ | 23 | | 28 | | 30 | | 18 | +------+ 4 rows in set (0.03 sec)
TIMESTAMPDIFF यूनिट विकल्प
| यूनिट | विवरण |
|---|---|
| MICROSECOND | माइक्रोसेकंड |
| SECOND | सेकंड |
| MINUTE | मिनट |
| HOUR | घंटा |
| DAY | दिन |
| WEEK | सप्ताह |
| MONTH | महीना |
| QUARTER | तिमाही |
| YEAR | वर्ष |
क्यों TIMESTAMPDIFF बेहतर है?
DATEDIFF की तुलना में:
-- गलत तरीका (केवल दिन गिनता है, लीप वर्ष नहीं संभालता) SELECT FLOOR(DATEDIFF(NOW(), StudentDOB) / 365.25) FROM DemoTable; -- सही तरीका SELECT TIMESTAMPDIFF(YEAR, StudentDOB, NOW()) FROM DemoTable;
- लीप वर्ष सही ढंग से संभालता है
- महीना/दिन तुलना करता है, केवल दिन नहीं
- सीधे वर्ष/महीना/दिन अंतर देता है
अतिरिक्त: वर्ष, महीना, दिन अलग-अलग
SELECT
TIMESTAMPDIFF(YEAR, StudentDOB, NOW()) AS Years,
TIMESTAMPDIFF(MONTH, StudentDOB, NOW()) % 12 AS Months,
FLOOR(DATEDIFF(NOW(), DATE_ADD(StudentDOB, INTERVAL TIMESTAMPDIFF(MONTH, StudentDOB, NOW()) MONTH)) / 30.44) AS Days
FROM DemoTable;
विशिष्ट तारीख के सापेक्ष उम्र
-- किसी विशिष्ट तारीख पर उम्र SELECT TIMESTAMPDIFF(YEAR, StudentDOB, '2023-12-31') AS AgeOnDate FROM DemoTable;