নিউজ টেবিল থেকে গত ৬ মাসের রেকর্ড সিলেক্ট করতে MySQL-এ DATE_SUB() ফাংশন ব্যবহার করতে হয় কারণ নিউজ রেকর্ডগুলো তারিখ অনুযায়ী সাজানো থাকে।
সিনট্যাক্স:
SELECT * FROM yourTableName WHERE yourDateTimeColumnName >= DATE_SUB(NOW(), INTERVAL 6 MONTH);
কনসেপ্ট বুঝতে একটি NEWS টেবিল তৈরি করি যেখানে শুধু NEWS ID এবং পাবলিশ হওয়ার তারিখ থাকবে:
mysql> CREATE TABLE Newstable (
-> NewsId INT,
-> NewsDatetime DATETIME
-> ); Query OK, 0 rows affected (0.66 sec)
ইনসার্ট কমান্ড দিয়ে রেকর্ড ইনসার্ট করি:
mysql> INSERT INTO Newstable VALUES(101,'2018-2-10'); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO Newstable VALUES(102,'2018-12-10'); Query OK, 1 row affected (0.19 sec) mysql> INSERT INTO Newstable VALUES(103,'2018-3-14'); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO Newstable VALUES(104,'2018-12-12'); Query OK, 1 row affected (0.29 sec) mysql> INSERT INTO Newstable VALUES(105,'2018-4-21'); Query OK, 1 row affected (0.09 sec) mysql> INSERT INTO Newstable VALUES(106,'2018-6-30'); Query OK, 1 row affected (0.22 sec)
সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখি:
mysql> SELECT * FROM Newstable;
আউটপুট
+--------+---------------------+ | NewsId | NewsDatetime | +--------+---------------------+ | 101 | 2018-02-10 00:00:00 | | 102 | 2018-12-10 00:00:00 | | 103 | 2018-03-14 00:00:00 | | 104 | 2018-12-12 00:00:00 | | 105 | 2018-04-21 00:00:00 | | 106 | 2018-06-30 00:00:00 | +--------+---------------------+ 6 rows in set (0.00 sec)
নিউজ টেবিল থেকে গত ৬ মাসের রেকর্ড সিলেক্ট করার ক্যোয়ারি:
mysql> SELECT * FROM Newstable WHERE NewsDatetime > DATE_SUB(NOW(), INTERVAL 6 MONTH);
আউটপুট
+--------+---------------------+ | NewsId | NewsDatetime | +--------+---------------------+ | 102 | 2018-12-10 00:00:00 | | 104 | 2018-12-12 00:00:00 | | 106 | 2018-06-30 00:00:00 | +--------+---------------------+ 3 rows in set (0.00 sec)