เมื่อคอลัมน์เก็บวันที่แบบ DATE (รูปแบบ YYYY-MM-DD) และต้องการค้นหาเฉพาะปีที่ต้องการ ให้ใช้ฟังก์ชัน YEAR() ดึงปีออกมาเปรียบเทียบ
รูปแบบคำสั่ง
SELECT * FROM yourTableName WHERE YEAR(yourColumnName) = 'targetYear';
ตัวอย่างการใช้งาน
สร้างตารางเก็บวันเกิด:
mysql> create table DemoTable1322 (DOB date);
mysql> insert into DemoTable1322 values('1999-04-12'),('2010-12-01'),('2015-03-09'),('2007-05-24');
ข้อมูลทั้งหมด:
+------------+ | DOB | +------------+ | 1999-04-12 | | 2010-12-01 | | 2015-03-09 | | 2007-05-24 | +------------+
คำสั่งค้นหาวันเกิดในปี 2015
mysql> select * from DemoTable1322 where year(DOB)='2015';
ผลลัพธ์
+------------+ | DOB | +------------+ | 2015-03-09 | +------------+
คำอธิบายเพิ่มเติม:
YEAR(date)คืนค่าปีเป็นตัวเลข 4 หลัก (เช่น 2015)- เปรียบเทียบกับสตริง
'2015'หรือตัวเลข2015ก็ได้ - ฟังก์ชันที่เกี่ยวข้อง:
MONTH(date),DAY(date),DATE_FORMAT(date, '%Y') - หากคอลัมน์เป็น VARCHAR ต้องแปลงก่อนด้วย
STR_TO_DATE() - สำหรับประสิทธิภาพ: หากค้นหาบ่อย ควรสร้าง Index บนคอลัมน์ DATE และใช้ Range query (
WHERE DOB >= '2015-01-01' AND DOB < '2016-01-01') แทน เพื่อให้ใช้ Index ได้