MySQL-এ CURDATE() ফাংশন ব্যবহার করে বর্তমান তারিখ অনুযায়ী রেকর্ড ফিল্টার করা যায়।
উদাহরণ
mysql> CREATE TABLE DemoTable (DueDate DATETIME);
Query OK, 0 rows affected (0.94 sec)
mysql> INSERT INTO DemoTable VALUES
('2019-07-10 04:20:00'), ('2019-07-10 05:10:40'), ('2019-07-10 09:00:20'),
('2019-07-10 10:01:04'), ('2019-07-10 12:11:10');
Query OK, 5 rows affected
সব রেকর্ড
mysql> SELECT * FROM DemoTable;
+---------------------+ | DueDate | +---------------------+ | 2019-07-10 04:20:00 | | 2019-07-10 05:10:40 | | 2019-07-10 09:00:20 | | 2019-07-10 10:01:04 | | 2019-07-10 12:11:10 | +---------------------+
আজকের তারিখ + সময় রেঞ্জ (04:00 - 10:00)
mysql> SELECT * FROM DemoTable WHERE DATE(DueDate) = CURDATE() AND TIME(DueDate) > '04:00:00' AND TIME(DueDate) < '10:00:00';
+---------------------+ | DueDate | +---------------------+ | 2019-07-10 04:20:00 | | 2019-07-10 05:10:40 | | 2019-07-10 09:00:20 | +---------------------+
ফাংশন ব্যাখ্যা
CURDATE()→ বর্তমান তারিখ (YYYY-MM-DD)DATE(datetime)→ ডেটাইম থেকে ডেট অংশ বের করেTIME(datetime)→ ডেটাইম থেকে টাইম অংশ বের করেNOW()→ বর্তমান ডেটাইম
পারফরম্যান্স টিপস
DATE(DueDate) = CURDATE()ইনডেক্স ব্যবহার করে না (ফাংশন কল)- দ্রুত পদ্ধতি:
WHERE DueDate >= CURDATE() AND DueDate < CURDATE() + INTERVAL 1 DAY - টাইম রেঞ্জও ইনডেক্স ফ্রেন্ডলি নয়; কম্পোজিট ইনডেক্স বা জেনারেটেড কলাম বিবেচনা করুন