अभी () -1 दिन से रिकॉर्ड का चयन करें


138

क्या MySQL स्टेटमेंट में एक तरीका है रिकॉर्ड्स (एक डेट स्टैम्प के माध्यम से) द्वारा = = Now () -1 ताकि सारे रिकॉर्ड्स आज से पहले के भविष्य के लिए चुने जाएं?

जवाबों:


269

दिनांक / समय के कार्यों के लिए प्रलेखन को देखते हुए , आपको कुछ ऐसा करने में सक्षम होना चाहिए:

SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY

अब इसे कैसे प्राप्त किया जाए .. मतलब उन सभी अभिलेखों में वर्तमान तिथि जो db में उपलब्ध हैं। ? यह सिर्फ एक दिन के लिए है लेकिन मुझे अब सभी रिकॉर्ड की जरूरत है। @ जौन
मुदासिर अब्बास

क्या यह यूटीसी में रिकॉर्ड होने पर उपयोगकर्ता के स्थानीय समय पर विचार करता है?
Adry

1
@ एड्री: मुझे इसमें संदेह है, लेकिन आपको सावधानीपूर्वक परीक्षण करना चाहिए।
जॉन स्कीट

62

ध्यान रखें कि परिणाम आपकी अपेक्षा से थोड़ा अलग हो सकता है।

NOW()एक रिटर्न DATETIME

और INTERVALनाम के अनुसार काम करता है, जैसे INTERVAL 1 DAY = 24 hours

तो अगर आपकी स्क्रिप्ट को चलाने के लिए cron'd है 03:00, तो यह याद आएगी first three hours of records from the 'oldest' day

पूरे दिन का उपयोग करने के लिए CURDATE() - INTERVAL 1 DAY। यह स्क्रिप्ट चलने पर ध्यान दिए बिना पिछले दिन की शुरुआत में वापस मिल जाएगा।


CURDATE () के लिए वोट ऊपर
लूटने



8

किसी भी उत्तर को सही तरीके से उपयोग DATE_ADDया नहीं देखा DATE_SUB:

से 1 दिन घटाएं NOW()

...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)

से 1 दिन जोड़ें NOW()

...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)

1

जब खोज फ़ील्ड टाइमस्टैम्प है और आप कल से 0 घंटे और आज के उपयोग से रिकॉर्ड खोजना चाहते हैं

MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))  

बजाय

 now() - interval 1 day
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.