DATETIME বা DATE কলামে নির্দিষ্ট তারিখের রেকর্ড কতটুকু আছে তা গণনা করতে DATE() ফাংশন বা সরাসরি তারিখ তুলনা ব্যবহার করা হয়।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1946 (ShippingDate DATE);
mysql> INSERT INTO DemoTable1946 VALUES
('2019-12-11'), ('2018-12-11'), ('2017-12-11'),
('2019-04-22'), ('2019-12-11'), ('2015-12-11');
ডেটা যাচাই
mysql> SELECT * FROM DemoTable1946;
+--------------+ | ShippingDate | +--------------+ | 2019-12-11 | | 2018-12-11 | | 2017-12-11 | | 2019-04-22 | | 2019-12-11 | | 2015-12-11 | +--------------+
কোয়েরি: '2019-12-11' তারিখের কাউন্ট
mysql> SELECT COUNT(*) FROM DemoTable1946
WHERE DATE(ShippingDate) = '2019-12-11';
আউটপুট:
+----------+ | count(*) | +----------+ | 2 | +----------+
বিকল্প পদ্ধতিসমূহ
| পদ্ধতি | কোয়েরি | টিপ্পণী |
|---|---|---|
| DATE() ফাংশন | WHERE DATE(ShippingDate) = '2019-12-11' | DATETIME কলামের জন্য উপযোগী |
| সরাসরি তুলনা | WHERE ShippingDate = '2019-12-11' | DATE কলামের জন্য যথেষ্ট (ইন্ডেক্স ব্যবহার করে) |
| রেঞ্জ কোয়েরি (সেরা পারফরম্যান্স) | WHERE ShippingDate >= '2019-12-11' AND ShippingDate < '2019-12-12' | ইন্ডেক্স ব্যবহার করে, DATETIME-এও কাজ করে |
পারফরম্যান্স টিপ
DATE(ShippingDate)ফাংশন কল করলে ইন্ডেক্স ব্যবহার হয় না (non-sargable)।- বড় টেবিলে সবসময় **রেঞ্জ কোয়েরি** (>= AND <) ব্যবহার করুন।
ShippingDateকলামে ইন্ডেক্স থাকতে হবে।
গ্রুপ বাই করে সব তারিখের কাউন্ট
SELECT ShippingDate, COUNT(*) AS cnt FROM DemoTable1946 GROUP BY ShippingDate ORDER BY cnt DESC;