MySQL-এ ডেট কলাম থেকে আজকের তারিখের রেকর্ড বের করতে CURDATE() ফাংশন এবং DATE() ফাংশন (ডেটাইম থেকে ডেট অংশ বের করতে) ব্যবহার করা হয়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> DueDate DATE
-> );
Query OK, 0 rows affected (1.35 sec)
mysql> INSERT INTO DemoTable VALUES('2019-06-14');
mysql> INSERT INTO DemoTable VALUES('2019-06-15');
mysql> INSERT INTO DemoTable VALUES('2019-06-16');
mysql> INSERT INTO DemoTable VALUES('2018-01-16');
mysql> INSERT INTO DemoTable VALUES('2018-07-16');
সব রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট
+------------+ | DueDate | +------------+ | 2019-06-14 | | 2019-06-15 | | 2019-06-16 | | 2018-01-16 | | 2018-07-16 | +------------+ 5 rows in set (0.00 sec)
আজকের তারিখের রেকর্ড বের করা (ধরে নেওয়া হয় আজ ২০১৯-০৬-১৬)
mysql> SELECT * FROM DemoTable WHERE DATE(DueDate) = CURDATE();
আউটপুট
+------------+ | DueDate | +------------+ | 2019-06-16 | +------------+ 1 row in set (0.03 sec)
ব্যাখ্যা: DATE(DueDate) — ডেটাইম কলাম হলে ডেট অংশ এক্সট্র্যাক্ট করে (এখানে ইতিমধ্যে DATE টাইপ, তাই অপ্রয়োজন কিন্তু নিরাপদ)। CURDATE() — বর্তমান তারিখ (টাইম ছাড়া)। উভয় তুলনা করে আজকের রেকর্ড বের করা হয়েছে।
পারফরম্যান্স টিপস: WHERE DueDate = CURDATE() (যদি কলাম DATE টাইপ হয়) ইনডেক্স ব্যবহার করতে পারে। DATE() ফাংশন কলামে লাগালে ইনডেক্স ব্যবহার হয় না (non-sargable)।
ডেটাইম কলামের জন্য: WHERE DueDate >= CURDATE() AND DueDate < CURDATE() + INTERVAL 1 DAY — ইনডেক্স বান্ধব।