MySQL में जन्म तिथि से वर्तमान उम्र की गणना
MySQL में उम्र निकालने का सामान्य तरीका: वर्तमान वर्ष में से जन्म वर्ष घटाएं।
बुनियादी सिंटैक्स:
SELECT yourColumnName1, yourColumnName2, ...,
YEAR(CURDATE()) - YEAR(yourDOBColumnName) AS anyVariableName
FROM yourTableName;
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE AgeDemo (
-> StudentId INT,
-> StudentName VARCHAR(100),
-> StudentDOB DATE
-> );
Query OK, 0 rows affected (0.61 sec)
2. डेटा डालें:
mysql> INSERT INTO AgeDemo VALUES(1,'John','1998-10-1'); mysql> INSERT INTO AgeDemo VALUES(2,'Carol','1990-1-2'); mysql> INSERT INTO AgeDemo VALUES(3,'Sam','2000-12-1'); mysql> INSERT INTO AgeDemo VALUES(4,'Mike','2010-10-11');
3. सभी रिकॉर्ड:
+-----------+-------------+------------+ | StudentId | StudentName | StudentDOB | +-----------+-------------+------------+ | 1 | John | 1998-10-01 | | 2 | Carol | 1990-01-02 | | 3 | Sam | 2000-12-01 | | 4 | Mike | 2010-10-11 | +-----------+-------------+------------+ 4 rows in set (0.00 sec)
4. उम्र निकालें:
mysql> SELECT StudentName, StudentDOB,
-> YEAR(CURDATE()) - YEAR(StudentDOB) AS StudentAge
-> FROM AgeDemo;
+-------------+------------+------------+ | StudentName | StudentDOB | StudentAge | +-------------+------------+------------+ | John | 1998-10-01 | 21 | | Carol | 1990-01-02 | 29 | | Sam | 2000-12-01 | 19 | | Mike | 2010-10-11 | 9 | +-------------+------------+------------+ 4 rows in set (0.03 sec)
⚠️ इस विधि की सीमा
यह विधि केवल वर्ष का अंतर देती है। अगर आज जन्मदिन नहीं आया है, तो उम्र 1 वर्ष अधिक दिखेगी।
सटीक उम्र के लिए बेहतर क्वेरी:
SELECT
StudentName,
StudentDOB,
TIMESTAMPDIFF(YEAR, StudentDOB, CURDATE()) AS ExactAge
FROM AgeDemo;
TIMESTAMPDIFF(YEAR, start, end) पूर्ण वर्षों का अंतर देता है, महीने/दिन को ध्यान में रखते हुए।
अन्य उपयोगी फंक्शन:
| फंक्शन | विवरण |
|---|---|
DATEDIFF(date1, date2) | दिनों में अंतर |
TIMESTAMPDIFF(MONTH, dob, CURDATE()) | महीनों में उम्र |
FLOOR(DATEDIFF(CURDATE(), dob)/365.25) | अनुमानित वर्ष (लीप वर्ष सहित) |