Ngày hiện tại của mysql - 7 ngày

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

Show

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

  1. Chúng tôi muốn tìm tất cả người dùng đã đăng nhập trong 7 ngày qua;
  2. Ngày hôm nay là 2020-06-12 (tôi. e. ngày 12 tháng 6 năm 2020);
  3. 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');
2
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');
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');
6
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');
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');
2
Kế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ại

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 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

  1. 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;
    
    8
  2. SELECT *, (CURDATE() - INTERVAL 7 DAY) AS diff
    FROM user 
    WHERE date_login  >= CURDATE() - INTERVAL 7 DAY
    ORDER BY date_login DESC;
    
    9. Khi 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 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ới
    SELECT *, (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ại

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

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ả

Làm cách nào để lấy dữ liệu 7 ngày trong MySQL?

Chúng tôi sử dụng hàm hệ thống now() để lấy giá trị ngày giờ mới nhất và mệnh đề INTERVAL để tính ngày cách đây 7 ngày .

Làm cách nào để thêm 15 ngày vào ngày hiện tại trong MySQL?

Sử dụng hàm DATE_ADD() nếu bạn muốn tăng một ngày nhất định trong cơ sở dữ liệu MySQL.

Làm cách nào để lấy dữ liệu tuần hiện tại trong MySQL?

Hàm WEEK() trong MySQL dùng để tìm số tuần của một ngày nhất định. Nếu ngày là NULL, hàm WEEK() sẽ trả về NULL. Mặt khác, nó trả về giá trị của tuần nằm trong khoảng từ 0 đến 53. Ngày hoặc giờ mà chúng tôi muốn trích xuất tuần.

Làm cách nào để lấy dữ liệu 3 ngày qua trong MySQL?

Sử dụng cho một ngày ba ngày trước. Ở ĐÂU. ngày >= DATE_ADD(CURDATE(), INTERVAL -3 DAY);