Sử dụng hàm YEAR() trích xuất năm từ cột TIMESTAMP hoặc DATETIME để lọc trong mệnh đề WHERE.
Cú pháp
SELECT ten_cot FROM ten_bang WHERE YEAR(ten_cot_timestamp) = 'nam_can_tim';
Ví dụ minh họa
Tạo bảng với cột timestamp mặc định:
mysql> CREATE TABLE LayNamRaKhoiTimestamp (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Ten VARCHAR(10),
-> ThoiGian TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-> PRIMARY KEY(Id)
-> );
Chèn dữ liệu (mixed năm):
mysql> INSERT INTO LayNamRaKhoiTimestamp(Ten, ThoiGian) VALUES ('John', NOW());
mysql> INSERT INTO LayNamRaKhoiTimestamp(Ten, ThoiGian) VALUES ('Carol', '2018-09-23 17:34:44');
mysql> INSERT INTO LayNamRaKhoiTimestamp(Ten, ThoiGian) VALUES ('Bob', '2016-05-12 16:12:34');
Dữ liệu:
+----+-------+---------------------+ | Id | Ten | ThoiGian | +----+-------+---------------------+ | 1 | John | 2019-02-05 11:46:11 | | 2 | Carol | 2018-09-23 17:34:44 | | 3 | Bob | 2016-05-12 16:12:34 | +----+-------+---------------------+
Lọc năm 2019
mysql> SELECT Id, Ten FROM LayNamRaKhoiTimestamp WHERE YEAR(ThoiGian) = '2019';
Kết quả:
+----+-------+ | Id | Ten | +----+-------+ | 1 | John | +----+-------+
Các hàm liên quan
MONTH(cot)- trích xuất tháng (1-12)DAY(cot)- trích xuất ngày (1-31)HOUR(cot),MINUTE(cot),SECOND(cot)DATE_FORMAT(cot, '%Y-%m')- định dạng tùy chỉnh
Mẹo tối ưu: Tránh dùng hàm trên cột trong WHERE nếu bảng lớn (không dùng index). Thay vào đó dùng range:
WHERE ThoiGian >= '2019-01-01' AND ThoiGian < '2020-01-01'