MySQL में YEAR(), CURRENT_TIMESTAMP, और RIGHT() फंक्शन का उपयोग करके जन्म तारीख से सटीक आयु गणना करें।
सिंटैक्स
SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(yourColumnName)
- (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(yourColumnName, 5)) AS age
FROM yourTableName;
उदाहरण
टेबल बनाना
mysql> create table AgeCalculatesDemo ( -> YourDateOfBirth datetime -> ); Query OK, 0 rows affected (0.50 sec)
विभिन्न जन्म तारीखें डालना
mysql> insert into AgeCalculatesDemo values(date_add(now(),interval -22 year));
mysql> insert into AgeCalculatesDemo values(date_add(now(),interval -12 year));
mysql> insert into AgeCalculatesDemo values(date_add(now(),interval -19 year));
mysql> insert into AgeCalculatesDemo values('2010-4-05');
सभी रिकॉर्ड देखना
mysql> select *from AgeCalculatesDemo;
+---------------------+ | YourDateOfBirth | +---------------------+ | 1996-12-06 23:35:26 | | 2006-12-06 23:35:32 | | 1999-12-06 23:35:42 | | 2010-04-05 00:00:00 | +---------------------+
आयु गणना क्वेरी
mysql> SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(YourDateOfBirth) -> - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(YourDateOfBirth, 5)) as YourAge -> from AgeCalculatesDemo;
+---------+ | YourAge | +---------+ | 22 | | 12 | | 19 | | 8 | +---------+
फॉर्मूला व्याख्या
आयु = वर्तमान_वर्ष - जन्म_वर्ष - (वर्तमान_महीना_दिन < जन्म_महीना_दिन ? 1 : 0)
YEAR(CURRENT_TIMESTAMP)— वर्तमान वर्षYEAR(YourDateOfBirth)— जन्म वर्षRIGHT(date, 5)— 'MM-DD' फॉर्मेट में महीना-दिन निकालता है- यदि इस वर्ष जन्मदिन अभी नहीं आया, तो 1 घटाता है
सरल विकल्प (MySQL 8.0+)
-- TIMESTAMPDIFF का उपयोग (अधिक पठनीय) SELECT TIMESTAMPDIFF(YEAR, YourDateOfBirth, CURDATE()) AS age FROM AgeCalculatesDemo;
DATE_SUB के साथ आयु सीमा क्वेरी
-- 18 वर्ष से अधिक उम्र के उपयोगकर्ता
SELECT * FROM users
WHERE DATE_OF_BIRTH <= DATE_SUB(CURDATE(), INTERVAL 18 YEAR);
-- 18-25 आयु वर्ग
SELECT * FROM users
WHERE DATE_OF_BIRTH BETWEEN DATE_SUB(CURDATE(), INTERVAL 25 YEAR)
AND DATE_SUB(CURDATE(), INTERVAL 18 YEAR);
सिफारिश: MySQL 8.0+ में TIMESTAMPDIFF उपयोग करें — यह अधिक पठनीय और कम त्रुटि-प्रवण है।