Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में जन्म तारीख से आयु कैसे गणना करें?


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 उपयोग करें — यह अधिक पठनीय और कम त्रुटि-प्रवण है।


  1. - MySQL में अगले 2 दिनों में समाप्ति तिथि (रिकॉर्ड) खोजें

    BETWEEN और CURDATE() के साथ आगामी तिथि रिकॉर्ड खोजना वर्तमान तिथि से अगले कुछ दिनों में आने वाली तिथियों को खोजने के लिए BETWEEN ऑपरेटर के साथ CURDATE() का उपयोग करें। टेबल और डेटा (मान लें वर्तमान तिथि 2019-08-18 है) CREATE TABLE DemoTable ( ExpiryDate DATE ); Query OK, 0 rows affected (0.55

  1. - MySQL में किसी तिथि से 30 दिन पुरानी DATE रिकॉर्ड हटाएं

    DELETE में INTERVAL के साथ सापेक्ष तिथि फ़िल्टर एक संदर्भ तिथि से 30 दिन से अधिक पुरानी रिकॉर्ड हटाने के लिए DELETE में WHERE date_column < (reference_date - INTERVAL 30 DAY) का उपयोग करें। सिंटैक्स DELETE FROM yourTableName WHERE yourColumnName < (yourAnotherDateValue - INTERVAL 30 DAY); टेबल और

  1. - MySQL में आज की तारीख 00:00 से वर्तमान समय तक की तारीख चुनें

    DATE(NOW()) (आज 00:00:00) और NOW() (वर्तमान डेटाटाइम) के बीच BETWEEN या तुलना ऑपरेटर का उपयोग करके आज के रिकॉर्ड फ़िल्टर करें। टेबल बनाना और डेटा डालना CREATE TABLE DemoTable (DueDate DATETIME); Query OK, 0 rows affected (0.66 sec) INSERT INTO DemoTable VALUES(2019-09-14),(2019-09-14 08:00:10),