Sử dụng toán tử BETWEEN kết hợp với hàm YEAR() và NOW() để lọc sinh viên theo độ tuổi.
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable863(StudentDateOfBirth DATE);
Query OK, 0 rows affected (0.56 sec)
mysql> INSERT INTO DemoTable863 VALUES('1998-01-10');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable863 VALUES('2000-10-15');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable863 VALUES('2003-04-20');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable863 VALUES('2005-12-31');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable863 VALUES('1999-07-01');
Query OK, 1 row affected (0.27 sec)
Truy vấn lọc độ tuổi 20-21
mysql> SELECT * FROM DemoTable863 WHERE (YEAR(NOW()) - YEAR(StudentDateOfBirth)) BETWEEN 20 AND 21;
Kết quả (giả sử năm hiện tại là 2019):
+--------------------+ | StudentDateOfBirth | +--------------------+ | 1998-01-10 | | 1999-07-01 | +--------------------+ 2 rows in set (0.03 sec)
Lưu ý quan trọng: Cách tính tuổi này chỉ dựa trên năm, chưa xét tháng/ngày. Để chính xác hơn, hãy dùng:
SELECT * FROM DemoTable863 WHERE TIMESTAMPDIFF(YEAR, StudentDateOfBirth, CURDATE()) BETWEEN 20 AND 21;