Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

นับจำนวนวันที่เฉพาะเจาะจงในตาราง MySQL ด้วย COUNT และ WHERE

ใช้ COUNT(*) กรองด้วย WHERE date(คอลัมน์) = 'วันที่' เพื่อนับแถวที่ตรงกับวันที่ต้องการ

ตัวอย่างการใช้งาน

สร้างตารางวันจัดส่ง:

mysql> create table DemoTable1946 (ShippingDate date);

เพิ่มข้อมูล (มี 2019-12-17 ซ้ำ 2 ครั้ง):

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   |
+--------------+
6 rows in set (0.00 sec)

คิวรีนับวันที่ 2019-12-11

mysql> select count(*) from DemoTable1946 where date(ShippingDate) = '2019-12-11';

ผลลัพธ์:

+----------+
| count(*) |
+----------+
|        2 |
+----------+
1 row in set (0.00 sec)

คำอธิบายและขยาย

  • date(ShippingDate): แปลง DATETIME → DATE (ถ้าคอลัมน์เป็น DATE อยู่แล้ว ไม่ต้องใช้)
  • นับหลายวันที่พร้อมกัน:
    SELECT ShippingDate, COUNT(*) as cnt 
    FROM DemoTable1946 
    GROUP BY ShippingDate 
    HAVING COUNT(*) > 1;
  • ใช้ INDEX: ควรสร้าง Index บนคอลัมน์วันที่ เพื่อ Query เร็วขึ้น
  • ช่วงวันที่: ใช้ BETWEEN '2019-12-01' AND '2019-12-31' แทน