MySQL-এ নির্দিষ্ট তারিখ থেকে গত N দিনের রেঞ্জে পড়া রেকর্ড ফিল্টার করতে DATE_SUB() এবং BETWEEN অপারেটর ব্যবহার করা হয়।
উদাহরণ (মান লইয়া: বর্তমান তারিখ ২০১৯-১০-২০)
১. টেবিল তৈরি করুন
mysql> CREATE TABLE DemoTable1582 (PostedDate DATETIME);
২. ভিন্ন তারিখের ডেটা ইনসার্ট করুন
mysql> INSERT INTO DemoTable1582 VALUES('2019-01-21 12:34:40');
mysql> INSERT INTO DemoTable1582 VALUES('2019-10-15 11:00:00');
mysql> INSERT INTO DemoTable1582 VALUES('2019-10-25 01:10:00');
৩. সব রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable1582;
আউটপুট:
+---------------------+
| PostedDate |
+---------------------+
| 2019-01-21 12:34:40 |
| 2019-10-15 11:00:00 |
| 2019-10-25 01:10:00 |
+---------------------+
৪. গত ৩ দিনের রেঞ্জে পড়া রেকর্ড ফিল্টার করুন (লজিক্যাল ভুল থাকতে পারে)
mysql> SELECT * FROM DemoTable1582
-> WHERE PostedDate BETWEEN DATE_SUB(PostedDate, INTERVAL 3 DAY) AND NOW();
৫. ফলাফল
+---------------------+
| PostedDate |
+---------------------+
| 2019-01-21 12:34:40 |
| 2019-10-15 11:00:00 |
+---------------------+
⚠️ গুরুত্বপূর্ণ লজিক্যাল সমস্যা: ওরিজিনাল কোয়েরিতে DATE_SUB(PostedDate, INTERVAL 3 DAY) ব্যবহার করা হয়েছে, যা প্রতিটি রোয়ার নিজস্ব PostedDate থেকে ৩ দিন আগে ক্যালকুলেট করে। ফলে প্রায় সব রোই মেলে যাবে (কারণ PostedDate সবসময় নিজের ৩ দিন পরে থাকে)।
সঠিক কোয়েরি (স্থির রেফারেন্স তারিখ ব্যবহার):
SELECT * FROM DemoTable1582
WHERE PostedDate BETWEEN DATE_SUB('2019-10-20', INTERVAL 3 DAY) AND '2019-10-20';
-- বা
WHERE PostedDate BETWEEN DATE_SUB(NOW(), INTERVAL 3 DAY) AND NOW();
এটি ২০১৯-১০-১৭ থেকে ২০১৯-১০-২০ পর্যন্ত রেকর্ড দেবে (২০১৯-১০-১৫ বাদ যাবে, ২০১৯-১০-২৫ বাদ যাবে)।