কম্পিউটার টিউটোরিয়াল

MySQL-এ DATEDIFF() ব্যবহার করে এক সপ্তাহের চেয়ে পুরনো রেকর্ড বের করা

MySQL-এ বর্তমান তারিখ থেকে এক সপ্তাহ (৭ দিন) বেশি পুরনো রেকর্ড বের করতে DATEDIFF() ফাংশন ব্যবহার করা হয়।

বর্তমান তারিখ দেখানো

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2019-06-09 19:15:56 |
+---------------------+
1 row in set (0.00 sec)

টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (
    -> ShippingDate DATETIME
    -> );
Query OK, 0 rows affected (0.66 sec)
mysql> INSERT INTO DemoTable VALUES('2019-06-01');
mysql> INSERT INTO DemoTable VALUES('2019-06-02');
mysql> INSERT INTO DemoTable VALUES('2019-06-14');
mysql> INSERT INTO DemoTable VALUES('2019-05-21');

সব রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable;

আউটপুট

+---------------------+
| ShippingDate        |
+---------------------+
| 2019-06-01 00:00:00 |
| 2019-06-02 00:00:00 |
| 2019-06-14 00:00:00 |
| 2019-05-21 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

৭ দিনের চেয়ে পুরনো রেকর্ড বের করা

বর্তমান তারিখ ২০১৯-০৬-০৯ হলে, ৭ দিন আগে হয় ২০১৯-০৬-০২। তার আগের তারিখগুলো বের করতে:

mysql> SELECT * FROM DemoTable WHERE DATEDIFF(NOW(), ShippingDate) > 7;

আউটপুট

+---------------------+
| ShippingDate        |
+---------------------+
| 2019-06-01 00:00:00 |
| 2019-05-21 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)

ব্যাখ্যা: DATEDIFF(NOW(), ShippingDate) বর্তমান তারিখ এবং ShippingDate-এর পার্থক্য (দিনে) রিটার্ন করে। যদি পার্থক্য ৭-এর চেয়ে বেশি হয়, তবে রোটি নির্বাচিত হয়।

বিকল্প পদ্ধতি: WHERE ShippingDate < DATE_SUB(NOW(), INTERVAL 7 DAY) — এটি ইনডেক্স-বান্ধব (sargable) হয়ে পারফরম্যান্সে ভালো।

  1. MySQL-এ বর্তমান তারিখের চেয়ে পুরনো রেকর্ড সিলেক্ট করা

  2. MySQL-এ ইনডেক্স ব্যবহার করে একাধিক রো দ্রুত সিলেক্ট করা

  3. MySQL-এ LIMIT ও OFFSET ব্যবহার করে ব্যাচewise রো সিলেক্ট করা

  4. MySQL-এ FROM_UNIXTIME ও NOW ব্যবহার করে ১ দিন পুরনো টাইমস্ট্যাম্প রো ফেচ করা