Khi có các ngày trùng lặp nhưng giờ khác nhau, dùng GROUP BY DATE(cot) để nhóm theo ngày.
Tạo bảng demo
mysql> create table DemoTable692 (DueDatetime datetime); Query OK, 0 rows affected (0.97 sec)
Chèn dữ liệu cùng ngày 2019-07-21 nhưng giờ khác nhau
mysql> insert into DemoTable692 values('2019-07-21 10:20:00');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable692 values('2019-06-11 11:00:10');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable692 values('2019-07-21 11:00:10');
Query OK, 1 row affected (1.97 sec)
mysql> insert into DemoTable692 values('2019-07-21 12:10:10');
Query OK, 1 row affected (0.18 sec)
Hiển thị dữ liệu gốc (4 hàng, 3 hàng cùng ngày 21/07)
mysql> select * from DemoTable692;
Kết quả
+---------------------+ | DueDatetime | +---------------------+ | 2019-07-21 10:20:00 | | 2019-06-11 11:00:10 | | 2019-07-21 11:00:10 | | 2019-07-21 12:10:10 | +---------------------+ 4 rows in set (0.00 sec)
Truy vấn GROUP BY DATE(DueDatetime)
mysql> select * from DemoTable692 GROUP BY DATE(DueDatetime);
Kết quả - Chỉ 2 hàng (mỗi ngày 1 hàng đại diện)
+---------------------+ | DueDatetime | +---------------------+ | 2019-07-21 10:20:00 | | 2019-06-11 11:00:10 | +---------------------+ 2 rows in set (0.00 sec)
Giải thích:
DATE(DueDatetime)trích xuất phần ngày, bỏ qua giờ/phút/giây.GROUP BYgom nhóm theo giá trị ngày này.- MySQL cho phép SELECT cột không trong GROUP BY (chế độ ONLY_FULL_GROUP_BY tắt), trả về hàng đầu tiên gặp trong mỗi nhóm.
Cách chuẩn SQL (chỉ chọn cột gom nhóm/hàm tổng hợp):
SELECT DATE(DueDatetime) as Ngay, COUNT(*) as SoLuong, MIN(DueDatetime) as DauTien, MAX(DueDatetime) as CuoiCung FROM DemoTable692 GROUP BY DATE(DueDatetime);
Kết quả:
+------------+---------+---------------------+---------------------+ | Ngay | SoLuong | DauTien | CuoiCung | +------------+---------+---------------------+---------------------+ | 2019-07-21 | 3 | 2019-07-21 10:20:00 | 2019-07-21 12:10:10 | | 2019-06-11 | 1 | 2019-06-11 11:00:10 | 2019-06-11 11:00:10 | +------------+---------+---------------------+---------------------+