> = এখনই () -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