offers.date = CURDATE()
मेरे पास वर्तमान में क्या है।पकड़ें जहां CURDATE() और दिन पहले MySQL
यह आज के लिए ऑफ़र प्रदान करता है, लेकिन मैं कल के लिए ऑर्डर लेना चाहता हूं।
कल की तारीख निर्दिष्ट किए बिना मैं यह कैसे कर सकता हूं?
offers.date = CURDATE()
मेरे पास वर्तमान में क्या है।पकड़ें जहां CURDATE() और दिन पहले MySQL
यह आज के लिए ऑफ़र प्रदान करता है, लेकिन मैं कल के लिए ऑर्डर लेना चाहता हूं।
कल की तारीख निर्दिष्ट किए बिना मैं यह कैसे कर सकता हूं?
CURDATE शून्य से या के साथ साथ एक अंतराल (जैसे कल) का उपयोग करने के लिए आप DATE_ADD समारोह
SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY);
तो उपयोग कर सकते हैं, आपके मामले में आप इसे इस तरह का उपयोग करें:
WHERE offers.date = CURDATE() OR offers.date = DATE_ADD(CURDATE(), INTERVAL -1 DAY)
वैकल्पिक रूप से आप कर सकते हैं DATE_SUB() फ़ंक्शन का उपयोग करें और नकारात्मक अंतराल के बजाय एक ही अंतराल का उपयोग करें लेकिन सकारात्मक।
इस प्रकार, DATE_ADD(CURDATE(), INTERVAL -1 DAY)
@ edwardmp के जवाब पर DATE_SUB(CURDATE(), INTERVAL 1 DAY)
भवन बन जाएगा, मैं DATE_ADD()
का उपयोग करने से इस वाक्य से थोड़ा अधिक पठनीय लगता है:
current_date() - interval 1 day
इसके अलावा, मैं OR
के बजाय IN
का प्रयोग करेंगे यह आसान बनाने के लिए इसे अपने बाकी हिस्सों के साथ संयोजित करने के लिए जहां कोष्ठक के बारे में ज्यादा चिंता किए बिना खंड:
WHERE offers.date in (current_date(), current_date() - interval 1 day)
मुझे लगता है जैसे कि यह आसान होगा सिर्फ यह भी
offers.date between (current_date() - interval 1 day) and current_date
एनबी हो सकता है निम्न
WHERE offers.date >= CURDATE() - INTERVAL 1 day
कहने के लिए: अगर offers.date क्योंकि एक datetime मूल्य है कि इस असफल हो जायेगी (2017-01-02) < (2017-01-02 12:34:56) तथ्य 2017-01-02 वास्तव में 2017-01-02 00:00:00 है।
क्या करने में गलत है (CURDATE() - 1): यह ठीक काम कर रहा है। –
@ murtaza.webdev जो सभी परिस्थितियों में काम नहीं करता है: यदि CURDATE() जून का पहला है, तो 1 घटाकर 0 जून तक पहुंच जाएगा .. https://bugs.mysql.com/bug.php?id= देखें 3958 – edwardmp