Tôi sẽ giải thích cho bạn ví dụ về cách lấy dữ liệu 7 ngày qua trong MySQL?. Bạn sẽ học cách lấy dữ liệu MySQL trong 7 ngày qua. Tôi muốn biết cách lấy truy vấn SQL dữ liệu trong 7 ngày qua
Bài viết này sẽ cung cấp cho bạn ví dụ đơn giản về cách lấy bản ghi 7 ngày qua trong MySQL. Chúng tôi sẽ sử dụng cách lấy dữ liệu 7 ngày qua từ một bảng trong MySQL
Ví dụ
Trừ 10 ngày từ một ngày và trả lại ngày
SELECT DATE_SUB["15-06-2017", THỜI GIAN 10 NGÀY];
Tự mình thử »Định nghĩa và cách sử dụng
Hàm DATE_SUB[] trừ khoảng thời gian/ngày từ một ngày và sau đó trả về ngày
cú pháp
DATE_SUB[ngày, khoảng giá trị INTERVAL]
Giá trị tham số
Tham sốMô tảngàyBắt buộc. Ngày được sửa đổi giá trị Bắt buộc. Giá trị của khoảng thời gian/ngày để trừ. Cả giá trị dương và âm đều được phépintervalBắt buộc. Loại khoảng để trừ. Có thể là một trong các giá trị sau- VI PHI GIÂY
- THỨ HAI
- PHÚT
- GIỜ
- NGÀY
- TUẦN
- THÁNG
- MỘT PHẦN TƯ
- NĂM
- SECOND_MICROSECOND
- PHÚT_MICROSECOND
- PHÚT_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- GIỜ_PHÚT
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- NĂM THÁNG
chi tiết kỹ thuật
Thêm ví dụ
Ví dụ
Trừ 15 phút từ một ngày và trả lại ngày
CHỌN NGÀY_SUB["2017-06-15 09. 34. 21", THỜI GIAN 15 PHÚT];
Tự mình thử »Ví dụ
Trừ 3 giờ từ một ngày và trả lại ngày
CHỌN NGÀY_SUB["2017-06-15 09. 34. 21", THỜI GIAN 3 GIỜ];
Tự mình thử »Ví dụ
Thêm 2 tháng vào một ngày và trả lại ngày
CHỌN NGÀY_SUB["15-06-2017", THỜI GIAN -2 THÁNG];
Tự mình thử »Trong bài viết này, chúng ta sẽ khám phá các cách để chọn các mục được thêm/sửa đổi trong n ngày qua bằng cách sử dụng MySQL [hoặc MariaDB]. Với mục đích của bài viết này, hãy giả sử như sau
- Chúng tôi muốn tìm tất cả người dùng đã đăng nhập trong 7 ngày qua;
- Ngày hôm nay là 2020-06-12 [tôi. e. ngày 12 tháng 6 năm 2020];
- Cấu trúc của bảng của chúng tôi như sau
+----+--------+------------+ | id | name | date_login | +----+--------+------------+ | 1 | jane | 2020-06-12 | | 2 | john | NULL | | 3 | david | 2020-05-24 | | 4 | zayne | 2020-06-05 | +----+--------+------------+
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];
So sánh trực tiếp với ngày hôm nay
Bạn có thể chỉ cần xem ngày đăng nhập có lớn hơn ngày 7 ngày trước hay không, như vậy
Sử dụng CREATE TABLE user [
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR[5] NOT NULL,
date_login DATE,
PRIMARY KEY [id]
];
INSERT INTO user[name, date_login] VALUES
['jane', '2020-06-12'],
['john', NULL],
['david', '2020-05-24'],
['zayne', '2020-06-05'];
8
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;
Nếu bạn sử dụng
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];8 mà không có
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;0, nó sẽ bao gồm ngày và giờ hiện tại
Sử dụng SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff
FROM user
WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY]
ORDER BY date_login DESC;
1
SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;
Sử dụng SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff
FROM user
WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY]
ORDER BY date_login DESC;
2
SELECT *, [CURRENT_DATE - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURRENT_DATE - INTERVAL 7 DAY ORDER BY date_login DESC;Kết quả
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];0
Sử dụng toán tử SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff
FROM user
WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY]
ORDER BY date_login DESC;
3
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];2Kết quả
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];3
Sử dụng chức năng SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff
FROM user
WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY]
ORDER BY date_login DESC;
4
Bạn có thể sử dụng hàm
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;5 để tính chênh lệch số ngày giữa hai giá trị ngày, như vậy.
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];6Kết quả
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];7
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;5 chỉ tính đến ngày chứ không phải thời gian
Sử dụng chức năng SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff
FROM user
WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY]
ORDER BY date_login DESC;
7
Hàm
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;7 có cú pháp như sau
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];0
Ví dụ, nó trừ giá trị
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;9 với
SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;0.
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];1
Hoặc, cách khác, chúng ta có thể sử dụng hàm
SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;1 có cú pháp giống như hàm
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;7. Điều này sẽ hoạt động bằng cách sử dụng một khoảng âm cho biểu thức, ví dụ
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];2Kết quả
Nếu bạn sử dụng
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];8 mà không có
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;0, nó sẽ bao gồm ngày và giờ hiện tạiKết quả
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];0
Sử dụng chức năng SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff
FROM user
WHERE date_login >= CURDATE[] - INTERVAL 7 DAY
ORDER BY date_login DESC;
5
Hàm
SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;6 có thể được sử dụng theo hai cách sau
SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;
7. Cú pháp này cho phép sử dụng một giá trị số nguyên cho ngày [i. e. nó được hiểu là số ngày được trừ khỏi biểu thức ngày hoặc giờSELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;
8SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;
9. Khi sử dụngSELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;
9 làm đối số thứ hai,SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;
6 là từ đồng nghĩa vớiSELECT *, [CURRENT_DATE - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURRENT_DATE - INTERVAL 7 DAY ORDER BY date_login DESC;
2
Hãy xem xét hai ví dụ dưới đây
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];4
Hoặc, sử dụng
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;9
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];5
Hoặc, cách khác, chúng ta có thể sử dụng hàm
SELECT *, [CURRENT_DATE - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURRENT_DATE - INTERVAL 7 DAY ORDER BY date_login DESC;4 có cú pháp giống như hàm
SELECT *, [CURDATE[] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURDATE[] - INTERVAL 7 DAY ORDER BY date_login DESC;5. Điều này sẽ hoạt động đơn giản bằng cách sử dụng một khoảng âm hoặc một giá trị số nguyên âm trong nhiều ngày, chẳng hạn
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];6
Nếu bạn sử dụng
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];8 mà không có
SELECT *, [DATE[NOW[]] - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= [DATE[NOW[]] - INTERVAL 7 DAY] ORDER BY date_login DESC;0, nó sẽ bao gồm ngày và giờ hiện tạiKết quả
CREATE TABLE user [ id INT NOT NULL AUTO_INCREMENT, name VARCHAR[5] NOT NULL, date_login DATE, PRIMARY KEY [id] ]; INSERT INTO user[name, date_login] VALUES ['jane', '2020-06-12'], ['john', NULL], ['david', '2020-05-24'], ['zayne', '2020-06-05'];0
Chọn Xem nhiều nhất trong 'n' ngày qua
Vì đây là trường hợp sử dụng phổ biến nên chúng tôi đã nghĩ đến việc đề cập đến chủ đề này
Sử dụng bất kỳ một trong các kỹ thuật được giải thích trong bài viết này, bạn có thể truy xuất các mục được xem nhiều nhất từ n số ngày qua. Tất cả những gì bạn cần làm là thêm một cột cơ sở dữ liệu bổ sung cho lượt truy cập hoặc lượt xem [hoặc thứ gì đó tương tự], cột này xác định 'lượt xem' hoặc 'lần truy cập', v.v. cho mặt hàng cụ thể đó. Sau đó, vấn đề đơn giản là sử dụng mệnh đề
SELECT *, [CURRENT_DATE - INTERVAL 7 DAY] AS diff FROM user WHERE date_login >= CURRENT_DATE - INTERVAL 7 DAY ORDER BY date_login DESC;8 để sắp xếp tập kết quả