এখন () -1 দিন থেকে রেকর্ড নির্বাচন করুন


138

> = এখনই () -1 দ্বারা রেকর্ডগুলি (একটি তারিখের স্ট্যাম্পের মাধ্যমে) অর্ডার করার জন্য কোনও মাইএসকিউএল স্টেটমেন্টে কোনও উপায় আছে কি তাই আজকের আগের দিন থেকে ভবিষ্যতে সমস্ত রেকর্ড নির্বাচন করা হয়?

উত্তর:


269

তারিখ / সময় ফাংশনগুলির জন্য ডকুমেন্টেশন দ্বারা বিচার করা , আপনি যেমন কিছু করতে সক্ষম হবেন:

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

কীভাবে এখন কীভাবে যাবেন .. ডিবিতে উপলব্ধ সমস্ত রেকর্ডের বর্তমান তারিখ মানে। ? এটি কেবল এক দিনের জন্য তবে শব্দগুলিতে আমার এখন সমস্ত রেকর্ড দরকার। @ জোন
আব্বাস

রেকর্ডগুলি ইউটিসিতে থাকা অবস্থায় এটি ব্যবহারকারীর স্থানীয় সময় বিবেচনা করে?
অ্যাড্রি

1
@ অ্যাড্রি: আমি সন্দেহ করি তবে আপনার সাবধানে পরীক্ষা করা উচিত।
জন স্কিটি

62

ফলাফলটি আপনার প্রত্যাশার চেয়ে কিছুটা আলাদা হতে পারে সে সম্পর্কে সচেতন হন।

NOW()ফেরত a DATETIME

এবং INTERVALনাম হিসাবে কাজ করে, যেমন INTERVAL 1 DAY = 24 hours

সুতরাং যদি আপনার স্ক্রিপ্টটি চালানোর জন্য ক্রোন করা হয় তবে 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 ঘন্টা এবং আজ 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.