BETWEEN और YEAR फंक्शन से एज रेंज क्वेरी
स्टूडेंट्स की जन्म तारीख से उम्र की गणना करके एक खास एज रेंज (जैसे 20-21 साल) में आने वाले रिकॉर्ड खोजने के लिए BETWEEN ऑपरेटर का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable863(StudentDateOfBirth DATE);
INSERT INTO DemoTable863 VALUES('1998-01-10');
INSERT INTO DemoTable863 VALUES('2000-10-15');
INSERT INTO DemoTable863 VALUES('2003-04-20');
INSERT INTO DemoTable863 VALUES('2005-12-31');
INSERT INTO DemoTable863 VALUES('1999-07-01');
मौजूदा डेटा
+--------------------+ | StudentDateOfBirth | +--------------------+ | 1998-01-10 | | 2000-10-15 | | 2003-04-20 | | 2005-12-31 | | 1999-07-01 | +--------------------+
क्वेरी: 20 से 21 साल के स्टूडेंट्स
SELECT * FROM DemoTable863 WHERE (YEAR(NOW()) - YEAR(StudentDateOfBirth)) BETWEEN 20 AND 21;
आउटपुट (मान लें वर्तमान वर्ष 2019 है)
+--------------------+ | StudentDateOfBirth | +--------------------+ | 1998-01-10 | | 1999-07-01 | +--------------------+
कैसे काम करता है
YEAR(NOW())- वर्तमान वर्ष (2019)YEAR(StudentDateOfBirth)- जन्म वर्ष- घटाव से अनुमानित उम्र मिलती है
BETWEEN 20 AND 21- 20 और 21 साल के बीच
सटीक उम्र गणना (महीना/दिन ध्यान में रखते हुए)
उपरोक्त तरीका केवल वर्ष देखता है, जो गलत हो सकता है। सटीक उम्र के लिए:
SELECT * FROM DemoTable863 WHERE TIMESTAMPDIFF(YEAR, StudentDateOfBirth, CURDATE()) BETWEEN 20 AND 21;
डेट रेंज के साथ विकल्प
SELECT * FROM DemoTable863
WHERE StudentDateOfBirth BETWEEN
DATE_SUB(CURDATE(), INTERVAL 21 YEAR)
AND DATE_SUB(CURDATE(), INTERVAL 20 YEAR);
यह तरीका इंडेक्स का बेहतर उपयोग करता है (SARGable)।