Sử dụng hàm MONTH() trong MySQL để chọn dữ liệu dựa trên tháng.
Tạo bảng demo
mysql> create table DemoTable (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName varchar(10),
-> UserPostMessageDate datetime,
-> UserLikes int
-> );
Query OK, 0 rows affected (0.77 sec)
Chèn dữ liệu
mysql> insert into DemoTable(UserName, UserPostMessageDate, UserLikes) values('John', '2019-01-31', 4560);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(UserName, UserPostMessageDate, UserLikes) values('Sam', '2019-06-28', 790);
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable(UserName, UserPostMessageDate, UserLikes) values('Carol', '2019-05-01', 230);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(UserName, UserPostMessageDate, UserLikes) values('David', '2019-03-05', 10000000);
Query OK, 1 row affected (0.33 sec)
Hiển thị tất cả
mysql> select * from DemoTable;
Kết quả
+----+----------+---------------------+-----------+ | Id | UserName | UserPostMessageDate | UserLikes | +----+----------+---------------------+-----------+ | 1 | John | 2019-01-31 00:00:00 | 4560 | | 2 | Sam | 2019-06-28 00:00:00 | 790 | | 3 | Carol | 2019-05-01 00:00:00 | 230 | | 4 | David | 2019-03-05 00:00:00 | 10000000 | +----+----------+---------------------+-----------+ 4 rows in set (0.00 sec)
Truy vấn lọc tháng 6 (tháng 6 = 6)
mysql> select Id, UserName, UserLikes from DemoTable where MONTH(UserPostMessageDate) = 6;
Kết quả - Chỉ bản ghi của Sam (tháng 6)
+----+----------+-----------+ | Id | UserName | UserLikes | +----+----------+-----------+ | 2 | Sam | 790 | +----+----------+-----------+ 1 row in set (0.00 sec)
Các hàm ngày/tháng liên quan:
YEAR(date): Năm (4 chữ số).MONTH(date): Tháng (1-12).DAY(date)/DAYOFMONTH(date): Ngày trong tháng (1-31).QUARTER(date): Quý (1-4).WEEK(date): Tuần trong năm.
Lưu ý hiệu năng: MONTH(cot) = 6 không dùng được index trên cột date. Cách tối ưu:
WHERE UserPostMessageDate >= '2019-06-01' AND UserPostMessageDate < '2019-07-01'