Date of Birth से Age निकालें
जन्म तिथि से age
एक बहुत आम ज़रूरत store की जन्म तिथि को सालों में age में बदलना है। यह सरल लगता है, पर गलत करना ऐसी ages देता है जो साल के ज़्यादातर हिस्से में एक से off होती हैं। MySQL का TIMESTAMPDIFF इसे सही और आसानी से करता है।
TIMESTAMPDIFF(YEAR, dob, CURDATE()) इस्तेमाल कीजिए — यह पूरे साल गिनता है, जन्मदिन का सम्मान करते हुए।साल घटाना क्यों fail होता है
-- गलत
SELECT YEAR(CURDATE()) - YEAR('2000-12-25'); -- 2026 में 26 देता है
-- पर Dec 25 का जन्मदिन अभी नहीं हुआ!
साल घटाना महीना और दिन अनदेखा करता है। दिसंबर में जन्मा कोई अपने जन्मदिन तक एक साल बड़ा नहीं होता। यह तरीका साल के ज़्यादातर हिस्से में गलत है।
सही तरीका: TIMESTAMPDIFF
SELECT name, dob,
TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age
FROM students;
TIMESTAMPDIFF(YEAR, dob, CURDATE()) जन्म तिथि और आज के बीच पूरे साल गिनता है, सही ढंग से संभालते हुए कि इस साल का जन्मदिन बीता या नहीं।
CURDATE() इस्तेमाल
CURDATE() आज की तारीख़ लौटाता है, तो age हमेशा मौजूदा रहती है — यह हर दिन अपने-आप update होती है बिना आपके कुछ बदले। आप CURDATE() को किसी विशिष्ट तारीख़ से बदलकर fixed date से भी तुलना कर सकते हैं, जैसे exam date पर age ढूँढने को।
Age से filter
SELECT name FROM members WHERE TIMESTAMPDIFF(YEAR, dob, CURDATE()) >= 18;
Age गणना WHERE clause में डालकर filter कीजिए। यह सारे members लौटाता है जो 18 या ऊपर हैं, हर एक की age उनकी जन्म तिथि से तुरंत गणना करके।
महीनों या दिनों में age
SELECT name,
TIMESTAMPDIFF(MONTH, dob, CURDATE()) AS age_months,
TIMESTAMPDIFF(DAY, dob, CURDATE()) AS age_days
FROM babies;
बारीक़ detail को पहला argument MONTH या DAY में बदलिए। यह शिशुओं, memberships, या किसी भी मामले को सुविधाजनक है जहाँ पूरे साल बहुत मोटे हों।
आम गलतियाँ
- सिर्फ़ साल घटाना। यह महीना और दिन अनदेखा करता है, गलत ages देकर।
- Argument क्रम गलत करना। यह
(unit, start, end)है — dob फिर CURDATE()। - dob को text store करना। DATE column इस्तेमाल कीजिए ताकि date functions चलें।
- यह भूलना CURDATE() रोज़ update होता है। यह feature है — age मौजूदा रहती है।
सारांश
- Age
TIMESTAMPDIFF(YEAR, dob, CURDATE())से गणना कीजिए। - सादा साल घटाना गलत है — यह महीना और दिन अनदेखा करता है।
- CURDATE() age अपने-आप मौजूदा रखता है।
- गणना WHERE में डालकर age से filter कीजिए।
- बारीक़ detail को MONTH या DAY units इस्तेमाल कीजिए।
आगे, महीने की सीमाएँ ढूँढिए first and last day of a month में, या हाल की rows records from the last 7 days में।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
MySQL में जन्म तिथि से age कैसे निकालूँ?
TIMESTAMPDIFF(YEAR, dob, CURDATE()) इस्तेमाल कीजिए। यह जन्म तिथि और आज के बीच पूरे सालों की संख्या सही गिनता है, यह ध्यान में रखते हुए कि इस साल का जन्मदिन बीता या नहीं। यह age पाने का सटीक तरीका है।Age को साल घटाना क्यों गलत है?
YEAR(CURDATE()) - YEAR(dob) करना महीना और दिन अनदेखा करता है। दिसंबर में जन्मा कोई साल के ज़्यादातर हिस्से में ग़लती से एक साल बड़ा दिखेगा, क्योंकि उनका जन्मदिन अभी नहीं हुआ। TIMESTAMPDIFF इससे बचता है।TIMESTAMPDIFF क्या करता है?
TIMESTAMPDIFF(YEAR, dob, CURDATE()) पूरे किए साल देता है, जो बिल्कुल age है।किसी उम्र से ऊपर के लोग कैसे ढूँढूँ?
WHERE TIMESTAMPDIFF(YEAR, dob, CURDATE()) >= 18। यह हर किसी को लौटाता है जो कम-से-कम 18 है, हर व्यक्ति की age उनकी जन्म तिथि से गणना करके।Age महीनों या दिनों में कैसे पाऊँ?
TIMESTAMPDIFF(MONTH, dob, CURDATE())) या दिनों को DAY इस्तेमाल कीजिए। यह शिशुओं या सटीक अवधियों को उपयोगी है, पूरे सालों के बजाय।