Truy vấn dữ liệu theo tuần hiện tại trong MySQL
Để truy vấn dữ liệu thuộc tuần hiện tại trong MySQL, bạn có thể sử dụng hàm YEARWEEK(). Hàm này trả về năm và số tuần của một ngày, cho phép so sánh dễ dàng với tuần hiện tại.
Cú pháp cơ bản
SELECT * FROM yourTableName WHERE YEARWEEK(yourDateColumnName) = YEARWEEK(NOW());
Ví dụ minh họa chi tiết
Đầu tiên, tạo một bảng mẫu:
mysql> CREATE TABLE currentWeekDemo (
-> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName VARCHAR(20),
-> UserPostDate DATE
-> );
Chèn một số dữ liệu mẫu:
mysql> INSERT INTO currentWeekDemo(UserName, UserPostDate) VALUES('Carol', '2010-01-06');
mysql> INSERT INTO currentWeekDemo(UserName, UserPostDate) VALUES('Bob', '2019-06-04');
mysql> INSERT INTO currentWeekDemo(UserName, UserPostDate) VALUES('David', '2019-03-06');
mysql> INSERT INTO currentWeekDemo(UserName, UserPostDate) VALUES('Maxwell', '2018-04-21');
Xem tất cả dữ liệu trong bảng:
mysql> SELECT * FROM currentWeekDemo;
Kết quả:
+--------+----------+--------------+ | UserId | UserName | UserPostDate | +--------+----------+--------------+ | 1 | Carol | 2010-01-06 | | 2 | Bob | 2019-06-04 | | 3 | David | 2019-03-06 | | 4 | Maxwell | 2018-04-21 | +--------+----------+--------------+
Truy vấn các bản ghi thuộc tuần hiện tại:
mysql> SELECT * FROM currentWeekDemo WHERE YEARWEEK(UserPostDate) = YEARWEEK(NOW());
Kết quả (giả sử tuần hiện tại là tuần của 2019-03-06):
+--------+----------+--------------+ | UserId | UserName | UserPostDate | +--------+----------+--------------+ | 3 | David | 2019-03-06 | +--------+----------+--------------+
Lưu ý quan trọng
- Hàm
YEARWEEK()kết hợp cả năm và số tuần, tránh nhầm lẫn giữa các năm khác nhau NOW()trả về ngày giờ hiện tại của server- Cách này hiệu quả cho các báo cáo tuần, thống kê hoạt động người dùng, v.v.