> = এখনই () -1 দ্বারা রেকর্ডগুলি (একটি তারিখের স্ট্যাম্পের মাধ্যমে) অর্ডার করার জন্য কোনও মাইএসকিউএল স্টেটমেন্টে কোনও উপায় আছে কি তাই আজকের আগের দিন থেকে ভবিষ্যতে সমস্ত রেকর্ড নির্বাচন করা হয়?
> = এখনই () -1 দ্বারা রেকর্ডগুলি (একটি তারিখের স্ট্যাম্পের মাধ্যমে) অর্ডার করার জন্য কোনও মাইএসকিউএল স্টেটমেন্টে কোনও উপায় আছে কি তাই আজকের আগের দিন থেকে ভবিষ্যতে সমস্ত রেকর্ড নির্বাচন করা হয়?
উত্তর:
তারিখ / সময় ফাংশনগুলির জন্য ডকুমেন্টেশন দ্বারা বিচার করা , আপনি যেমন কিছু করতে সক্ষম হবেন:
SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
ফলাফলটি আপনার প্রত্যাশার চেয়ে কিছুটা আলাদা হতে পারে সে সম্পর্কে সচেতন হন।
NOW()
ফেরত a DATETIME
।
এবং INTERVAL
নাম হিসাবে কাজ করে, যেমন INTERVAL 1 DAY = 24 hours
।
সুতরাং যদি আপনার স্ক্রিপ্টটি চালানোর জন্য ক্রোন করা হয় তবে 03:00
এটি মিস করবে first three hours of records from the 'oldest' day
।
পুরো দিন ব্যবহার পেতে CURDATE() - INTERVAL 1 DAY
। স্ক্রিপ্টটি কখন চলবে তা নির্বিশেষে এটি আগের দিনের শুরুতে ফিরে আসবে।
আপনি প্রায় সেখানে: এটি NOW() - INTERVAL 1 DAY
অবশ্যই আপনি পারবেন:
SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
DATE_ADD
তারপর ব্যবহার বিভ্রান্ত -1 day
।
কোনও উত্তর সঠিকভাবে 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)
যখন অনুসন্ধানের ক্ষেত্রটি টাইমস্ট্যাম্প এবং আপনি গতকাল 0 ঘন্টা এবং আজ 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