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

MySQL-এ আজকের তারিখ দুটি DATE কলামের মধ্যে আছে কিনা চেক করা

MySQL-এ আজকের তারিখ দুটি DATE কলামের মধ্যে আছে কিনা চেক করতে AND অপারেটর ব্যবহার করতে হয়। সিনট্যাক্স নিচে দেওয়া হলো:

SELECT *FROM yourTableName WHERE yourDateColumnName1 <='yourDateValue' AND yourDateColumnName2 >= 'yourDateValue';

এটি বুঝতে একটি টেবিল তৈরি করা যাক। টেবিল তৈরির কোয়েরি:

mysql> create table selectDates 
-> ( 
-> Id int NOT NULL AUTO_INCREMENT, 
-> StartingDate date, 
-> EndingDate date, 
-> PRIMARY KEY(Id) 
-> ); Query OK, 0 rows affected (0.80 sec)

ইনসার্ট কমান্ড দিয়ে কিছু রেকর্ড ইনসার্ট করা যাক। কোয়েরিটি হলো:

mysql> insert into selectDates(StartingDate,EndingDate) values('2019-01-11','2019-01-23'); Query OK, 1 row affected (0.17 sec) mysql> insert into selectDates(StartingDate,EndingDate) values('2019-01-10','2019-01-23'); Query OK, 1 row affected (0.17 sec) mysql> insert into selectDates(StartingDate,EndingDate) values('2019-01-30','2019-01-30'); Query OK, 1 row affected (0.12 sec) mysql> insert into selectDates(StartingDate,EndingDate) values('2019-10-14','2019-10-28'); Query OK, 1 row affected (0.17 sec) mysql> insert into selectDates(StartingDate,EndingDate) values('2019-10-14','2019-10-20'); Query OK, 1 row affected (0.19 sec) mysql> insert into selectDates(StartingDate,EndingDate) values('2019-11-17','2019-11-19'); Query OK, 1 row affected (0.52 sec) mysql> insert into selectDates(StartingDate,EndingDate) values('2019-12-21','2019-12-31'); Query OK, 1 row affected (0.19 sec) mysql> insert into selectDates(StartingDate,EndingDate) values('2019-01-06','2019-01-21'); Query OK, 1 row affected (0.16 sec) mysql> insert into selectDates(StartingDate,EndingDate) values('2019-01-07','2019-01-17'); Query OK, 1 row affected (0.18 sec)

সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখানো যাক। কোয়েরিটি হলো:

mysql> select *from selectDates;

আউটপুট নিচে দেওয়া হলো:

+----+--------------+------------+ | Id | StartingDate | EndingDate | +----+--------------+------------+ |  1 | 2019-01-11   | 2019-01-23 | |  2 | 2019-01-10   | 2019-01-23 | |  3 | 2019-01-30   | 2019-01-30 | |  4 | 2019-10-14   | 2019-10-28 | |  5 | 2019-10-14   | 2019-10-20 | |  6 | 2019-11-17   | 2019-11-19 | |  7 | 2019-12-21   | 2019-12-31 | |  8 | 2019-01-06   | 2019-01-21 | |  9 | 2019-01-07   | 2019-01-17 | +----+--------------+------------+ 9 rows in set (0.00 sec)

আজকের তারিখ (2019-01-10) দুটি ডেট কলামের মধ্যে আছে কিনা চেক করার কোয়েরি:

select *from selectDates where StartingDate <='2019-01-10' AND EndingDate >='2019-01-10';

আউটপুট নিচে দেওয়া হলো:

+----+--------------+------------+ | Id | StartingDate | EndingDate | +----+--------------+------------+ | 2 | 2019-01-10 | 2019-01-23 | | 8 | 2019-01-06 | 2019-01-21 | | 9 | 2019-01-07 | 2019-01-17 | +----+--------------+------------+ 3 rows in set (0.00 sec)

ব্যাখ্যা: StartingDate <= 'target_date' AND EndingDate >= 'target_date' কন্ডিশন দিয়ে যেকোনো নির্দিষ্ট তারিখ (আজকের তারিখ বা ডাইনামিক CURDATE()) একটি ডেট রেঞ্জের মধ্যে আছে কিনা চেক করা যায়। এটি ইভেন্ট শিডিউলিং, সাবস্ক্রিপশন ভ্যালিডিটি, অ্যাক্টিভিটি লগ ফিল্টারিং-এ খুব কাজে লাগে। ডাইনামিক আজকের তারিখের জন্য CURDATE() ফাংশন ব্যবহার করুন।

  1. MySQL কোয়েরি: 00:00 থেকে আজকের তারিখ পর্যন্ত ডেটা নির্বাচন করা

  2. MySQL-এ isMarried = 0 olan সারি গোষ্ঠী করে (GROUP BY) ক্লায়েন্ট অনুযায়ী বের করা

  3. MySQL-এ BETWEEN দিয়ে দুটি তারিখের রেঞ্জের মধ্যে সকল ডেটা বের করা

  4. MySQL-এ একই সারির দুটি ভিন্ন কলামের তারিখের মধ্যে দিনের পার্থক্য বের করা