MySQL-এ আলাদা আলাদা কলামে থাকা মাস (Month) এবং বছর (Year) এর কম্বিনেশন দিয়ে শর্তসাপেক্ষে ডেটা ফিল্টার করতে WHERE ক্লজে OR অপারেটর ব্যবহার করা হয়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> MonthNumber INT,
-> YearNumber INT
-> );
mysql> INSERT INTO DemoTable(MonthNumber, YearNumber) VALUES(11, 2018);
mysql> INSERT INTO DemoTable(MonthNumber, YearNumber) VALUES(3, 2019);
mysql> INSERT INTO DemoTable(MonthNumber, YearNumber) VALUES(12, 2018);
mysql> INSERT INTO DemoTable(MonthNumber, YearNumber) VALUES(1, 2019);
mysql> INSERT INTO DemoTable(MonthNumber, YearNumber) VALUES(12, 2019);
mysql> INSERT INTO DemoTable(MonthNumber, YearNumber) VALUES(6, 2018);
সব রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable;
+----+-------------+------------+
| Id | MonthNumber | YearNumber |
+----+-------------+------------+
| 1 | 11 | 2018 |
| 2 | 3 | 2019 |
| 3 | 12 | 2018 |
| 4 | 1 | 2019 |
| 5 | 12 | 2019 |
| 6 | 6 | 2018 |
+----+------------+------------+
শর্ত: (মাস >= 11 AND বছর = 2019) OR (মাস <= 11 AND বছর = 2018)
mysql> SELECT Id, MonthNumber, YearNumber
-> FROM DemoTable
-> WHERE (MonthNumber >= 11 AND YearNumber = 2019)
-> OR (MonthNumber <= 11 AND YearNumber = 2018);
ফলাফল
+----+-------------+------------+
| Id | MonthNumber | YearNumber |
+----+-------------+------------+
| 1 | 11 | 2018 |
| 5 | 12 | 2019 |
| 6 | 6 | 2018 |
+----+-------------+------------+
ব্যাখ্যা:
- Id=1: Month=11 (>=11), Year=2018 → ২য় শর্ত মেনে (Month<=11 AND Year=2018)
- Id=5: Month=12 (>=11), Year=2019 → ১ম শর্ত মেনে (Month>=11 AND Year=2019)
- Id=6: Month=6 (<=11), Year=2018 → ২য় শর্ত মেনে
উন্নত পদ্ধতি: DATE কলাম ব্যবহার
আপনার টেবিলে যদি DATE বা DATETIME কলাম থাকে, তবে এটি সহজ:
SELECT * FROM DemoTable
WHERE DateColumn >= '2018-11-01' AND DateColumn <= '2019-11-30';
এটি ইনডেক্স ব্যবহার করতে পারে এবং পড়তে সহজ।