हां, MySQL में DATEDIFF() फ़ंक्शन और वर्तमान दिनांक का उपयोग करके आप जन्म दिनांक से आयु की गणना कर सकते हैं। परिणाम वर्षों में अनुमानित आयु देता है।
उदाहरण तालिका बनाना
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
DateOfBirth DATE
);
जन्म दिनांक डालना
mysql> INSERT INTO DemoTable (DateOfBirth) VALUES
-> ('2010-01-21'), ('1993-04-02'), ('1999-12-01'), ('1998-11-16'), ('2004-03-19');
डेटा देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+-------------+ | Id | DateOfBirth | +----+-------------+ | 1 | 2010-01-21 | | 2 | 1993-04-02 | | 3 | 1999-12-01 | | 4 | 1998-11-16 | | 5 | 2004-03-19 | +----+-------------+
आयु की गणना करना (वर्षों में)
mysql> SELECT CAST(DATEDIFF(CURDATE(), DateOfBirth) / 365.25 AS UNSIGNED) AS AGE FROM DemoTable;
आउटपुट (मान लें आज 2019-04-09 है):
+------+ | AGE | +------+ | 9 | | 26 | | 19 | | 20 | | 15 | +------+
आयु रेंज द्वारा फ़िल्टर करना (20-26 वर्ष)
mysql> SELECT * FROM DemoTable
-> WHERE YEAR(CURDATE()) - YEAR(DateOfBirth) BETWEEN 20 AND 26;
आउटपुट:
+----+-------------+ | Id | DateOfBirth | +----+-------------+ | 2 | 1993-04-02 | | 3 | 1999-12-01 | | 4 | 1998-11-16 | +----+-------------+
व्याख्या:
DATEDIFF(date1, date2)- दो दिनांकों के बीच दिनों का अंतरCURDATE()- वर्तमान दिनांक/ 365.25- लीप वर्ष के लिए औसत दिन प्रति वर्षCAST(... AS UNSIGNED)- पूर्णांक में बदलता है (दशमलव हटाता है)
अधिक सटीक आयु गणना:
SELECT FLOOR(DATEDIFF(CURDATE(), DateOfBirth) / 365.25) AS Age FROM DemoTable;
या सटीक वर्ष गणना के लिए:
SELECT TIMESTAMPDIFF(YEAR, DateOfBirth, CURDATE()) AS Age FROM DemoTable;
TIMESTAMPDIFF लीप वर्ष और महीना/दिन को सही ढंग से संभालता है।