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() ফাংশন ব্যবহার করুন।