पिछले 7 दिन के Records
हाल की rows लाना
एक बहुत आम report "पिछले 7 दिन के records दिखाओ" है — हाल के orders, sign-ups या logs। MySQL इसे CURDATE() और INTERVAL से आसान बनाता है, और वही pattern 30 दिन, आज, या किसी भी अवधि को scale होता है।
date_column >= CURDATE() - INTERVAL 7 DAY इस्तेमाल कीजिए — यह हर दिन सही रहता है।पिछले 7 दिन
SELECT * FROM orders WHERE order_date >= CURDATE() - INTERVAL 7 DAY;
यह पिछले हफ़्ते के भीतर dated हर order लौटाता है। चूँकि यह CURDATE() इस्तेमाल करता है, इसका मतलब अपने-आप "पिछले 7 दिन" है चाहे आप किस दिन चलाएँ।
INTERVAL कैसे काम करता है
SELECT CURDATE(), CURDATE() - INTERVAL 7 DAY;
INTERVAL 7 DAY तारीख़ को सात दिन shift करता है। इसे आज से घटाना एक हफ़्ता पहले की तारीख़ देता है, जो range की निचली सीमा बनती है।
सिर्फ़ आज
SELECT * FROM orders WHERE DATE(created_at) = CURDATE();
सिर्फ़ आज की rows पाने को, date हिस्से की CURDATE() से तुलना कीजिए। column को DATE() में लपेटना time अनदेखा करता है, तो आज बनी हर row मेल खाती है, चाहे clock time जो हो।
पिछले 30 दिन
SELECT * FROM orders WHERE order_date >= CURDATE() - INTERVAL 30 DAY;
बस संख्या और unit बदलिए। वही pattern पिछले 30 दिन, पिछले 3 महीने (INTERVAL 3 MONTH), या पिछला साल (INTERVAL 1 YEAR) देता है।
Date-time columns के साथ
SELECT * FROM logs WHERE created_at >= NOW() - INTERVAL 7 DAY;
अगर column पूरी date और time store करता है, CURDATE() के बजाय NOW() (जो time शामिल करता है) इस्तेमाल कीजिए। यह ठीक 7 दिन पहले से इस पल तक के records देता है।
आम गलतियाँ
- Fixed date इस्तेमाल करना। यह stale हो जाती है; CURDATE()/NOW() मौजूदा रहते हैं।
- Time हिस्सा अनदेखा करना। column time कैसे store करता है उससे मिलाने को DATE() या NOW() इस्तेमाल कीजिए।
- गलत interval unit। DAY, MONTH, YEAR आपके इरादे से मेल खाना चाहिए।
- Date को string से तुलना करना। Dates DATE/DATETIME columns में store कीजिए।
सारांश
- पिछले 7 दिन
>= CURDATE() - INTERVAL 7 DAYसे पाइए। - INTERVAL तारीख़ को दिनों, महीनों या सालों की संख्या shift करता है।
- सिर्फ़ आज को
DATE(col) = CURDATE()इस्तेमाल कीजिए। - 30 दिन, महीने, साल आदि को संख्या/unit बदलिए।
- Date-time columns को CURDATE() के बजाय NOW() इस्तेमाल कीजिए।
आगे, महीने की सीमाएँ पाइए first and last day of a month में, या ages गणना कीजिए age from date of birth में।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
MySQL में पिछले 7 दिन के records कैसे पाऊँ?
WHERE date_column >= CURDATE() - INTERVAL 7 DAY इस्तेमाल कीजिए। यह पिछले हफ़्ते के भीतर, आज तक dated सारी rows लौटाता है। यह हर दिन अपने-आप update होता है क्योंकि यह CURDATE() पर आधारित है।MySQL में INTERVAL क्या करता है?
CURDATE() - INTERVAL 7 DAY 7 दिन पहले की तारीख़ देता है। आप range queries को dates shift करने को DAY, MONTH, YEAR और अन्य units इस्तेमाल कर सकते हैं।सिर्फ़ आज के records कैसे पाऊँ?
WHERE DATE(created_at) = CURDATE()। DATE() इस्तेमाल करना time हटाता है, तो आज की सारी rows मेल खाती हैं चाहे वे किस समय बनी हों।पिछले 30 दिन के records कैसे पाऊँ?
WHERE date_column >= CURDATE() - INTERVAL 30 DAY। वही pattern INTERVAL value और unit समायोजित करके किसी भी संख्या के दिनों, महीनों या सालों को चलता है।