বর্তমান তারিখ (CURDATE()) এবং আগামীকাল (CURDATE() + INTERVAL 1 DAY) এই দুটি তারিখের যেকোনো একটি মিলে রেকর্ড বের করতে IN অপারেটর ব্যবহার করা সহজ ও পঠনীয়।
বর্তমান তারিখ যাচাই
mysql> SELECT CURDATE();
+------------+ | curdate() | +------------+ | 2019-12-15 | +------------+
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1956 (
ProductId INT,
ProductName VARCHAR(20),
CustomerName VARCHAR(20),
ShippingDate DATE
);
mysql> INSERT INTO DemoTable1956 VALUES
(101, 'Product-1', 'Sam', '2019-10-11'),
(102, 'Product-2', 'Carol', '2018-12-01'),
(103, 'Product-3', 'David', '2019-12-15'), -- আজ
(104, 'Product-4', 'Robert', '2019-12-16'); -- আগামীকাল
ডেটা যাচাই
mysql> SELECT * FROM DemoTable1956;
+-----------+-------------+--------------+--------------+ | ProductId | ProductName | CustomerName | ShippingDate | +-----------+-------------+--------------+--------------+ | 101 | Product-1 | Sam | 2019-10-11 | | 102 | Product-2 | Carol | 2018-12-01 | | 103 | Product-3 | David | 2019-12-15 | | 104 | Product-4 | Robert | 2019-12-16 | +-----------+-------------+--------------+--------------+
কোয়েরি: আজ এবং আগামীকালের শিপিং वाले কাস্টমার
mysql> SELECT CustomerName
FROM DemoTable1956
WHERE ShippingDate IN (CURDATE(), CURDATE() + INTERVAL 1 DAY);
আউটপুট:
+--------------+ | CustomerName | +--------------+ | David | | Robert | +--------------+
বিকল্প পদ্ধতিসমূহ
| পদ্ধতি | কোয়েরি | টিপ্পণী |
|---|---|---|
| IN (সুপারিশ করা) | WHERE ShippingDate IN (CURDATE(), CURDATE()+INTERVAL 1 DAY) | পঠনীয়, ইন্ডেক্স ব্যবহার করতে পারে |
| OR | WHERE ShippingDate = CURDATE() OR ShippingDate = CURDATE()+1 | সমতুল্য |
| BETWEEN | WHERE ShippingDate BETWEEN CURDATE() AND CURDATE()+INTERVAL 1 DAY | রেঞ্জ, ইনক্লूसিভ |
| রেঞ্জ (সেরা পারফরম্যান্স) | WHERE ShippingDate >= CURDATE() AND ShippingDate < CURDATE()+INTERVAL 2 DAY | ইন্ডেক্স ফ্রেন্ডলি |
সতর্কতা
CURDATE()কোয়েরি এক্সিকিউশন শুরু হওয়ার সময়ের তারিখ রিটার্ন করে (স্থির থাকে পুরো কোয়েরিতে)।NOW()বাSYSDATE()সময়সহ রিটার্ন করে — DATE কলামে তুলনা করলে টাইম কম্পোনেন্ট ঝুঁকি সৃষ্টি করতে পারে।