Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL: Lấy bản ghi theo năm cụ thể từ cột TIMESTAMP (YEAR())

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'