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

เปรียบเทียบเฉพาะวันและเดือนกับฟิลด์ Date ใน MySQL

ใช้ฟังก์ชัน 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)

ประโยชน์

เหมาะสำหรับค้นหาวันเกิด วันครบรอบ หรือเหตุการณ์ประจำปี โดยไม่สนใจปีเกิด