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

Chọn bản ghi theo tháng cụ thể trong MySQL (hàm MONTH)

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àmTrả 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ăm20

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.