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

Select ข้อมูลใน MySQL เฉพาะเดือนและปีที่กำหนด

กรองข้อมูลตามเดือนและปีด้วย YEAR() และ MONTH()

ใช้ฟังก์ชัน YEAR(date) และ MONTH(date) ดึงส่วนปีและเดือนมาเปรียบเทียบ

รูปแบบคำสั่ง (Syntax)

SELECT * FROM yourTableName 
WHERE YEAR(yourDateColumn) = year_value 
  AND MONTH(yourDateColumn) = month_value;

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

สร้างตาราง selectDataOnYearandMonthDemo:

CREATE TABLE selectDataOnYearandMonthDemo (
    BookId INT,
    BookName VARCHAR(100),
    BookDueDate DATETIME
);

ข้อมูล:

BookIdBookNameBookDueDate
101C in Depth2017-12-05 21:44:20
102Let us C2019-12-05 00:00:00
103SCJP Java2018-12-05 00:00:00
104Introduction to C++2016-04-05 00:00:00

ค้นหาหนังสือที่ครบกำหนด เดือน 12 ปี 2019:

SELECT * FROM selectDataOnYearandMonthDemo 
WHERE YEAR(BookDueDate) = 2019 
  AND MONTH(BookDueDate) = 12;

ผลลัพธ์:

BookIdBookNameBookDueDate
102Let us C2019-12-05 00:00:00

ข้อควรระวังด้านประสิทธิภาพ

เหมือนกับ DATE() การใช้ YEAR() และ MONTH() บนคอลัมน์ จะทำให้ Index ไม่ถูกใช้งาน

วิธีแก้ (Range Query):

SELECT * FROM selectDataOnYearandMonthDemo 
WHERE BookDueDate >= '2019-12-01 00:00:00' 
  AND BookDueDate < '2020-01-01 00:00:00';

วิธีนี้ใช้ Index บน BookDueDate ได้ และเร็วกว่ามากสำหรับตารางใหญ่