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

ค้นหาวันเกิดในปีเฉพาะใน MySQL ใช้ YEAR() กับคอลัมน์ DATE

เมื่อคอลัมน์เก็บวันที่แบบ 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 ได้