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

MySQL-এ মাসের সপ্তাহ (week of month) বের করার বিল্ট-ইন ফাংশন আছে কি?

MySQL-এ মাসের সপ্তাহ বের করার জন্য কোনো স্ট্যান্ডার্ড বিল্ট-ইন ফাংশন নেই। কিন্তু নিচের ফর্মুলা ব্যবহার করে ক্যালকুলেট করা যায়।

ফর্মুলা

SELECT WEEK(yourDateColumnName, 5) 
     - WEEK(DATE_SUB(yourDateColumnName, INTERVAL DAYOFMONTH(yourDateColumnName) - 1 DAY), 5) 
     + 1 AS anyAliasName 
FROM yourTableName;

উদাহরণ দিয়ে বুঝি

টেবিল তৈরি করুন:

mysql> CREATE TABLE FirstWeekOfMonth (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> yourdate DATE
    -> );
Query OK, 0 rows affected (2.50 sec)

রেকর্ড ইনসার্ট করুন:

mysql> INSERT INTO FirstWeekOfMonth(yourdate) VALUES('2019-01-18');
mysql> INSERT INTO FirstWeekOfMonth(yourdate) VALUES('2019-04-19');
mysql> INSERT INTO FirstWeekOfMonth(yourdate) VALUES('2019-05-20');
mysql> INSERT INTO FirstWeekOfMonth(yourdate) VALUES('2019-12-31');
mysql> INSERT INTO FirstWeekOfMonth(yourdate) VALUES('2019-10-05');
mysql> INSERT INTO FirstWeekOfMonth(yourdate) VALUES('2019-08-25');

সকল রেকর্ড দেখুন:

mysql> SELECT * FROM FirstWeekOfMonth;
+----+------------+
| Id | yourdate   |
+----+------------+
|  1 | 2019-01-18 |
|  2 | 2019-04-19 |
|  3 | 2019-05-20 |
|  4 | 2019-12-31 |
|  5 | 2019-10-05 |
|  6 | 2019-08-25 |
+----+------------+
6 rows in set (0.00 sec)

মাসের সপ্তাহ বের করুন

mysql> SELECT WEEK(yourdate, 5) 
    -> - WEEK(DATE_SUB(yourdate, INTERVAL DAYOFMONTH(yourdate) - 1 DAY), 5) 
    -> + 1 AS FirstWeekDemo 
    -> FROM FirstWeekOfMonth;
+---------------+
| FirstWeekDemo |
+---------------+
|             3 |
|             3 |
|             4 |
|             6 |
|             1 |
|             4 |
+---------------+
6 rows in set (0.00 sec)

ব্যাখ্যা:

  • WEEK(date, 5) - সপ্তাহ নম্বর (মঙ্গলবার শুরু)
  • DAYOFMONTH(date) - 1 - মাসের প্রথম দিন বের করতে
  • DATE_SUB(date, INTERVAL ... DAY) - মাসের প্রথম তারিখ বের করতে
  • দুই সপ্তাহের পার্থক্য + 1 = মাসের সপ্তাহ নম্বর

নোট: MySQL 8.0+ এ WEEK() মোড প্যারামিটার দিয়ে সপ্তাহের শুরু দিন কাস্টমাইজ করা যায়।

  1. MySQL-এ টাইমস্ট্যাম্পকে মাসে কনভার্ট করা

  2. MySQL-এ LIKE অপারেটরকে IN() এর মতো ব্যবহার করা

  3. MySQL-এ টেবিলে নেই এমন মানগুলো কোয়েরি করে বের করা (UNION ALL + NOT EXISTS)

  4. MySQL-এ একক কোয়ারিতে সব কলামের জন্য এলিয়াস (Alias) সেট করা