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

SELECT theo tháng và năm trong MySQL?

Sử dụng hàm YEAR(cot) và MONTH(cot) trong mệnh đề WHERE.

Cú pháp:

SELECT * FROM ten_bang
WHERE YEAR(cot_datetime) = 2019 AND MONTH(cot_datetime) = 12;

Ví dụ bảng sách:

CREATE TABLE selectDataOnYearandMonthDemo (BookId INT, BookName VARCHAR(100), BookDueDate DATETIME);
INSERT INTO selectDataOnYearandMonthDemo VALUES
(101,'C in Depth', DATE_ADD(NOW(), INTERVAL -1 YEAR)),
(102,'Let us C', DATE_ADD(CURDATE(), INTERVAL 1 YEAR)),
(103,'SCJP Java', '2018-12-05'),
(104,'Introduction to C++', '2016-04-05');

Dữ liệu (giả sử NOW = 2018-12-05):

+--------+--------------------+---------------------+
| BookId | BookName           | BookDueDate         |
+--------+--------------------+---------------------+
|    101 | C in Depth         | 2017-12-05 21:44:20 |
|    102 | Let us C           | 2019-12-05 00:00:00 |
|    103 | SCJP Java          | 2018-12-05 00:00:00 |
|    104 | Introduction to C++| 2016-04-05 00:00:00 |
+--------+--------------------+---------------------+

Tìm sách hạn tháng 12/2019:

SELECT * FROM selectDataOnYearandMonthDemo
WHERE YEAR(BookDueDate) = 2019 AND MONTH(BookDueDate) = 12;

Kết quả

+--------+----------+---------------------+
| BookId | BookName | BookDueDate         |
+--------+----------+---------------------+
|    102 | Let us C | 2019-12-05 00:00:00 |
+--------+----------+---------------------+

Hiệu năng: YEAR(), MONTH() làm mất index. Với bảng lớn, dùng range:

WHERE BookDueDate >= '2019-12-01 00:00:00' AND BookDueDate < '2020-01-01 00:00:00'