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

กรองวันที่ใน MySQL ให้แสดงเฉพาะเดือนที่ต้องการ

เมื่อคอลัมน์เก็บวันที่เป็น VARCHAR ในรูปแบบ YYYY-MM-DD สามารถใช้ LIKE กรองเฉพาะเดือนที่ต้องการได้โดยตรง ไม่ต้องแปลงชนิดข้อมูล

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    AdmissionDate varchar(100) ); 
Query OK, 0 rows affected (1.06 sec)

เพิ่มข้อมูลวันที่

mysql> insert into DemoTable values('2018-01-21'); 
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-08-13'); 
Query OK, 1 row affected (0.56 sec)
mysql> insert into DemoTable values('2019-07-08'); 
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2016-02-12'); 
Query OK, 1 row affected (0.14 sec)

แสดงข้อมูลทั้งหมด

mysql> select * from DemoTable;
+---------------+
| AdmissionDate |
+---------------+
| 2018-01-21    |
| 2019-08-13    |
| 2019-07-08    |
| 2016-02-12    |
+---------------+
4 rows in set (0.00 sec)

คำสั่งกรองเฉพาะเดือน สิงหาคม (08) ปี 2019

mysql> select * from DemoTable 
where AdmissionDate like '2019-08%';

ผลลัพธ์

+---------------+
| AdmissionDate |
+---------------+
| 2019-08-13    |
+---------------+
1 row in set (0.04 sec)

คำอธิบาย: รูปแบบ '2019-08%' จะจับคู่สตริงที่ขึ้นต้นด้วย 2019-08 ทุกวันที่ในเดือนสิงหาคม ปี 2019

วิธีทางเลือก (ถ้าคอลัมน์เป็น DATE/DATETIME): ใช้ MONTH(AdmissionDate) = 8 AND YEAR(AdmissionDate) = 2019 หรือ DATE_FORMAT(AdmissionDate, '%Y-%m') = '2019-08' ซึ่งแม่นยำกว่าและใช้ดัชนีได้