MySQL में जन्म तिथि (DOB) से उम्र की गणना और क्वेरी करना
MySQL में जन्म तिथि से उम्र की गणना करने के लिए DATE_SUB(), INTERVAL, या TIMESTAMPDIFF() फ़ंक्शन का उपयोग किया जा सकता है।
उदाहरण के साथ पूर्ण कार्यान्वयन
टेबल बनाना
mysql> CREATE TABLE DemoTable611 (DOB DATE);
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable611 VALUES('1996-04-21'), ('2001-01-31'), ('2004-12-21'), ('2000-02-03');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable611;
आउटपुट:
+------------+
| DOB |
+------------+
| 1996-04-21 |
| 2001-01-31 |
| 2004-12-21 |
| 2000-02-03 |
+------------+
4 rows in set (0.00 sec)
16 वर्ष या उससे कम उम्र के लोग (कम से कम 16 साल पहले जन्मे)
mysql> SELECT * FROM DemoTable611
WHERE DOB >= (CURDATE() - INTERVAL 16 YEAR);
आउटपुट (मान लें आज 2020-07-14 है):
+------------+
| DOB |
+------------+
| 2004-12-21 |
+------------+
1 row in set (0.00 sec)
व्याख्या: CURDATE() - INTERVAL 16 YEAR आज से 16 साल पहले की तारीख देता है। जिनका DOB इस तारीख के बाद या बराबर है, वे 16 साल या उससे कम उम्र के हैं।
सटीक उम्र की गणना करने के बेहतर तरीके
विधि 1: TIMESTAMPDIFF() (सबसे सटीक)
SELECT DOB,
TIMESTAMPDIFF(YEAR, DOB, CURDATE()) AS age
FROM DemoTable611;
यह जन्मदिन को सही ढंग से संभालता है (उम्र जन्मदिन पर ही बढ़ती है)।
विधि 2: DATEDIFF() के साथ गणना
SELECT DOB,
FLOOR(DATEDIFF(CURDATE(), DOB) / 365.25) AS approx_age
FROM DemoTable611;
अनुमानित; लीप वर्ष के कारण थोड़ा गलत हो सकता है।
विधि 3: YEAR() अंतर (सरल लेकिन कम सटीक)
SELECT DOB,
YEAR(CURDATE()) - YEAR(DOB) -
(DATE_FORMAT(CURDATE(), '%m-%d') < DATE_FORMAT(DOB, '%m-%d')) AS age
FROM DemoTable611;
उम्र सीमा के लिए क्वेरी
-- 18-65 आयु वर्ग
SELECT * FROM DemoTable611
WHERE TIMESTAMPDIFF(YEAR, DOB, CURDATE()) BETWEEN 18 AND 65;
सिफारिश: सटीक उम्र गणना के लिए हमेशा TIMESTAMPDIFF(YEAR, DOB, CURDATE()) का उपयोग करें।