ใช้ฟังก์ชัน DATE_FORMAT() เพื่อเปรียบเทียบเฉพาะวันและเดือน (ไม่สนใจปี)
ไวยากรณ์
SELECT * FROM yourTableName
WHERE DATE_FORMAT(yourColumnName, '%m-%d') = DATE_FORMAT('yourValue', '%m-%d')
AND yourCondition;
สร้างตารางตัวอย่าง
mysql> create table compareDayAndMonthDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> compareDayAndTime date
-> );
Query OK, 0 rows affected (0.49 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into compareDayAndMonthDemo(compareDayAndTime) values('2014-01-31');
mysql> insert into compareDayAndMonthDemo(compareDayAndTime) values('2014-10-11');
mysql> insert into compareDayAndMonthDemo(compareDayAndTime) values('2016-09-12');
mysql> insert into compareDayAndMonthDemo(compareDayAndTime) values('2017-04-25');
mysql> insert into compareDayAndMonthDemo(compareDayAndTime) values('2018-12-25');
mysql> insert into compareDayAndMonthDemo(compareDayAndTime) values('2019-02-27');
แสดงข้อมูลทั้งหมด
mysql> select * from compareDayAndMonthDemo;
ผลลัพธ์:
+----+-------------------+ | Id | compareDayAndTime | +----+-------------------+ | 1 | 2014-01-31 | | 2 | 2014-10-11 | | 3 | 2016-09-12 | | 4 | 2017-04-25 | | 5 | 2018-12-25 | | 6 | 2019-02-27 | +----+-------------------+
Query เปรียบเทียบวัน-เดือน (01-31) และ Id=1
mysql> SELECT * FROM compareDayAndMonthDemo
-> WHERE DATE_FORMAT(compareDayAndTime, '%m-%d') = DATE_FORMAT('2019-01-31', '%m-%d')
-> AND Id = 1;
ผลลัพธ์:
+----+-------------------+ | Id | compareDayAndTime | +----+-------------------+ | 1 | 2014-01-31 | +----+-------------------+
Query แสดงเฉพาะวัน-เดือน
mysql> SELECT DATE_FORMAT(compareDayAndTime, '%m-%d') AS DayAndMonthOnly
-> FROM compareDayAndMonthDemo
-> WHERE DATE_FORMAT(compareDayAndTime, '%m-%d') = DATE_FORMAT('2019-01-31', '%m-%d')
-> AND Id = 1;
ผลลัพธ์:
+-----------------+ | DayAndMonthOnly | +-----------------+ | 01-31 | +-----------------+
รูปแบบฟอร์แมตที่ใช้บ่อย
%m= เดือน 2 หลัก (01-12)%d= วัน 2 หลัก (01-31)%Y= ปี 4 หลัก%c= เดือน 1-2 หลัก (1-12)%e= วัน 1-2 หลัก (1-31)
ประโยชน์
เหมาะสำหรับค้นหาวันเกิด วันครบรอบ หรือเหตุการณ์ประจำปี โดยไม่สนใจปีเกิด