เมื่อคอลัมน์เก็บวันที่เป็น 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' ซึ่งแม่นยำกว่าและใช้ดัชนีได้