Đếm số bản ghi datetime rơi trong khoảng giữa hai ngày, dùng BETWEEN với cột DATETIME hoặc DATE.
Ví dụ minh họa
Tạo bảng login:
mysql> create table DemoTable (
Login datetime
);
Chèn dữ liệu:
mysql> insert into DemoTable values('2019-08-10');
mysql> insert into DemoTable values('2019-08-12');
mysql> insert into DemoTable values('2019-08-20');
mysql> insert into DemoTable values('2019-08-24');
Hiển thị dữ liệu (MySQL tự thêm 00:00:00 cho DATE literal):
mysql> select * from DemoTable;
Kết quả:
+---------------------+ | Login | +---------------------+ | 2019-08-10 00:00:00 | | 2019-08-12 00:00:00 | | 2019-08-20 00:00:00 | | 2019-08-24 00:00:00 | +---------------------+
Truy vấn COUNT với BETWEEN
mysql> select count(*) from DemoTable where Login between '2019-08-12' and '2019-08-24';
Kết quả:
+----------+ | count(*) | +----------+ | 3 | +----------+
Giải thích:
BETWEEN '2019-08-12' AND '2019-08-24': Kể cả 2 đầu (inclusive)- Khớp: 2019-08-12, 2019-08-20, 2019-08-24 → 3 bản ghi
- 2019-08-10 < 2019-08-12 → không khớp
⚠️ Lưu ý quan trọng với DATETIME: Nếu cột là DATETIME có giờ phút giây, BETWEEN '2019-08-12' AND '2019-08-24' thực chất là BETWEEN '2019-08-12 00:00:00' AND '2019-08-24 00:00:00' → **bỏ sót** các bản ghi ngày 2019-08-24 sau 00:00:00.
Cách an toàn cho DATETIME: WHERE Login >= '2019-08-12' AND Login < '2019-08-25' (ngày kết thúc + 1 ngày).