Tóm tắt
Dùng hàm MONTH(cot_datetime) trích xuất tháng (1-12) để lọc trong WHERE.
Cú pháp
SELECT cot FROM bang WHERE MONTH(cot_datetime) = so_thang;
Ví dụ
1. Tạo bảng login
CREATE TABLE UserLoginTimeInformation (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserLoginDatetime DATETIME
);
2. Dữ liệu
INSERT INTO UserLoginTimeInformation (UserLoginDatetime) VALUES
(DATE_ADD(NOW(), INTERVAL 3 MONTH)), -- tương lai
('2013-05-13 13:45:34'),
('2013-06-11 12:41:04'),
('2012-05-25 15:03:24'),
('2017-05-21 12:12:40'),
('2018-09-29 11:30:34'),
('2016-03-10 16:40:45');
3. Lọc tháng 5 (May)
SELECT UserLoginDatetime
FROM UserLoginTimeInformation
WHERE MONTH(UserLoginDatetime) = 5;
4. Kết quả
+---------------------+
| UserLoginDatetime |
+---------------------+
| 2019-05-13 15:01:24 | -- từ DATE_ADD(NOW(), 3 MONTH) nếu NOW là tháng 2
| 2013-05-13 13:45:34 |
| 2012-05-25 15:03:24 |
| 2017-05-21 12:12:40 |
+---------------------+
Hàm liên quan
| Hàm | Trả về | Ví dụ |
|---|---|---|
| YEAR(dt) | Năm (4 chữ số) | 2019 |
| MONTH(dt) | Tháng (1-12) | 5 |
| DAY(dt) | Ngày (1-31) | 13 |
| HOUR(dt) | Giờ (0-23) | 15 |
| MINUTE(dt) | Phút (0-59) | 1 |
| SECOND(dt) | Giây (0-59) | 24 |
| QUARTER(dt) | Quý (1-4) | 2 |
| WEEK(dt) | Tuần trong năm | 20 |
Hiệu năng
MONTH(cot)không dùng được index trên cột datetime (không sargable).- Để dùng index:
WHERE cot >= '2019-05-01' AND cot < '2019-06-01'(range query). - MySQL 8.0: functional index
INDEX ((MONTH(cot)))cho phép index hàm.