अभी () -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.