Hướng dẫn how to filter date in mysql - cách lọc ngày trong mysql

Tôi có bảng MySQL được sử dụng cho tệp nhật ký trên bảng đó có một trường gọi là 'log_date' và nó lưu trữ ngày ở định dạng sau (%y-%m-%d%h:%i.%S ). Trên DB các ngày trông giống như một cái gì đó 2013-20-05 00: 00.00. Hãy nói rằng ngày hôm nay là 2013-20-05 và tôi có các tệp nhật ký từ 2013-01-01 đến ngày nay. Nếu tôi chạy một truy vấn như thế này:

SELECT * FROM log_table
WHERE STR_TO_DATE(log_date, '%Y-%m-%d %H:%i.%s') < '2013-05-05 00:00.00'

Điều này đang trả lại mỗi hàng trong DB bao gồm các hàng lớn hơn 2013-05-05 00: 00.00

And if I reverse the < (less then) to a > (greater then) with a query that looks like this:

SELECT * FROM log_table
WHERE STR_TO_DATE(log_date, '%Y-%m-%d %H:%i.%s') > '2013-05-05 00:00.00'

Sau đó, nó trả về các hàng không. Tôi nghĩ rằng tem thời gian là những gì gây ra vấn đề tôi đã làm việc với định dạng ngày trước đó nhưng không phải là định dạng DateTime. Tại sao chuyện này đang xảy ra?

Hướng dẫn how to filter date in mysql - cách lọc ngày trong mysql

Cœur

358K24 Huy hiệu vàng189 Huy hiệu bạc257 Huy hiệu đồng24 gold badges189 silver badges257 bronze badges

Đã hỏi ngày 20 tháng 5 năm 2013 lúc 19:47May 20, 2013 at 19:47

1

log_date phải thuộc loại dữ liệu DateTime. Việc sử dụng hàm ngày MySQL đơn giản hơn nhiều. Vài ví dụ

SELECT * FROM log_table
WHERE DATE(log_date) < '2013-05-05'

SELECT * FROM log_table
WHERE DATE(log_date) > '2013-05-05'

SELECT * FROM log_table
WHERE DATE(log_date) BETWEEN '2013-04-05' AND '2013-05-05'

SELECT * FROM log_table
WHERE DATE(log_date) BETWEEN DATE(CURRENT_DATE() - INTERVAL 2 WEEK) AND 
DATE(CURRENT_DATE() + INTERVAL 4 DAY)

Đã trả lời ngày 20 tháng 5 năm 2013 lúc 21:03May 20, 2013 at 21:03

blottoblottoblotto

3.3071 Huy hiệu vàng19 Huy hiệu bạc19 Huy hiệu đồng1 gold badge19 silver badges19 bronze badges

4

Bạn có thể thử với điều đó ..

WHERE DATE_FORMAT(AUCTION_DATE, '%Y%m%d') >= DATE_FORMAT('2013/5/18', '%Y%m%d')

Bạn cũng có thể nhận được ngày hôm nay bằng hàm bây giờ ().now() function.

Josh Correia

3.1773 huy hiệu vàng26 Huy hiệu bạc44 Huy hiệu đồng3 gold badges26 silver badges44 bronze badges

Đã trả lời ngày 21 tháng 5 năm 2013 lúc 5:11May 21, 2013 at 5:11

Hướng dẫn how to filter date in mysql - cách lọc ngày trong mysql

CataclysmcataclysmCataclysm

6.92418 Huy hiệu vàng69 Huy hiệu bạc121 Huy hiệu Đồng18 gold badges69 silver badges121 bronze badges

1

MySQL là một hệ thống quản lý cơ sở dữ liệu phổ biến và dễ sử dụng, được đóng gói với nhiều tính năng và tính linh hoạt để phù hợp với một loạt các trường hợp sử dụng. Một tính năng như vậy là kiểu dữ liệu ngày MySQL được sử dụng để tạo và lưu trữ các giá trị ngày.

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn qua kiểu dữ liệu ngày MySQL và chỉ cho bạn cách bạn có thể lọc từ một phạm vi ngày.

Điều cơ bản

MySQL Date là một loại dữ liệu lưu trữ các giá trị ngày dưới dạng Yyyy-MM-DD. Loại ngày sử dụng 3 byte để lưu trữ bản ghi ngày. Loại ngày MySQL dao động từ 1000-01-0 đến 9999-12-21.

MySQL được đóng gói với rất nhiều chức năng để tạo và thao tác các giá trị ngày. Tuy nhiên, do phạm vi của hướng dẫn, chúng tôi sẽ không đi sâu vào chúng. Xem xét các tài liệu để tìm hiểu thêm.

Chúng ta hãy lấy một ví dụ đơn giản để chỉ ra cách lưu trữ các giá trị ngày trong MySQL. Xem xét các truy vấn sau đây.

Tạo cơ sở dữ liệu nếu không tồn tại DATE_DB sử dụng DATE_DB; Tạo bảng ngày_records (& nbsp; & nbsp; id int auto_increment khóa chính, & nbsp; & nbsp; ngày có thời gian biểu không null); Chèn vào các giá trị date_records (thời gian biểu) ('2021-06-06'), & nbsp; & nbsp; ('2020-01-20'), & nbsp; & nbsp; ('2030-03-03');
USE date_db;
CREATE TABLE date_records(
    id INT AUTO_INCREMENT PRIMARY KEY,
    timetable DATE NOT NULL
);
INSERT INTO date_records(timetable)
VALUES('2021-06-06'),
    ('2020-01-20'),
    ('2030-03-03');

Bây giờ chúng ta có thể chọn các giá trị từ bảng là:

Chọn * từ Date_Records; +----+------------+| ID | thời gian biểu & nbsp; | +----+------------+| & nbsp; 1 | 2021-06-06 | | & nbsp; 2 | 2020-01-20 | | & nbsp; 3 | 2030-03-03 | +----+------------+3 hàng trong tập (0,00 giây)
+----+------------+
| id | timetable  |
+----+------------+
|  1 | 2021-06-06 |
|  2 | 2020-01-20 |
|  3 | 2030-03-03 |
+----+------------+
3 rows in set (0.00 sec)

Bạn có thể sử dụng các hàm MySQL để thêm nhiều giá trị ngày vào bảng.

Làm thế nào để lọc phạm vi ngày?

Bây giờ chúng ta hãy đi vào chủ đề trong tay: Làm thế nào để lọc trong phạm vi ngày?

MySQL thông minh và rất trực quan. Bạn có thể sử dụng các toán tử so sánh bình thường để lọc dữ liệu trong một phạm vi ngày cụ thể.

Chúng ta hãy lấy cơ sở dữ liệu mẫu Sakila có sẵn trong tài nguyên được cung cấp dưới đây:

https://dev.mysql.com/doc/index-other.html

Trong bảng thanh toán, chúng tôi có thể lọc cho ngày thanh toán phạm vi trong một khoảng thời gian cụ thể.

Ví dụ: để lọc các khoản thanh toán nằm trong khoảng từ 2005-05-25 11:30:37 và 2005-07-30 19:23:44, chúng ta có thể sử dụng truy vấn dưới đây:

Chọn Payment_ID, Khách hàng_id, Cho thuê_ID từ Thanh toán trong đó Payment_Date trong khoảng thời gian '2005-05-25 11:30:37' và '2005-07-30 19:23:44' Giới hạn 10;
FROM payment
WHERE payment_date BETWEEN '2005-05-25 11:30:37' AND '2005-07-30 19:23:44' LIMIT 10;

Ví dụ trên sẽ trả về các cột nơi các giá trị nằm giữa phạm vi thời gian được chỉ định.

Hướng dẫn how to filter date in mysql - cách lọc ngày trong mysql

Một ví dụ khác là lọc cho các giá trị cho đến một ngày cụ thể. Trong trường hợp này, chúng ta có thể sử dụng ít hơn hoặc bằng người vận hành như:

Chọn Payment_ID, Khách hàng_id, Cho thuê_ID từ Thanh toán trong đó Payment_Date & NBSP;
FROM payment
WHERE payment_date  <= '2005-05-25 11:30:37' LIMIT 10;

Hướng dẫn how to filter date in mysql - cách lọc ngày trong mysql

Trong ví dụ trên, truy vấn trả về tất cả các giá trị trong phạm vi của 2005-05-25 11:30:37 và bên dưới.

Bản tóm tắt

MySQL cho phép bạn sử dụng các toán tử so sánh để lọc cho các phạm vi ngày như bạn làm cho các loại khác như số nguyên.

Thông tin về các Tác giả

Hướng dẫn how to filter date in mysql - cách lọc ngày trong mysql

Tên tôi là John và là một người đồng tính giống như bạn. Tôi đam mê tất cả mọi thứ máy tính từ phần cứng, hệ điều hành đến lập trình. Ước mơ của tôi là chia sẻ kiến ​​thức của tôi với thế giới và giúp đỡ các chuyên viên máy tính. Theo dõi nội dung của tôi bằng cách đăng ký danh sách gửi thư Linuxhint

Làm cách nào để chọn một ngày cụ thể trong MySQL?

Bạn có thể sử dụng ngày () từ MySQL để chọn các bản ghi với một ngày cụ thể.Cú pháp như sau.Chọn *từ yourTableName ở đâu ngày (yourDateColumnName) = 'anydate';Để hiểu cú pháp trên, trước tiên chúng ta hãy tạo một bảng.SELECT *from yourTableName WHERE DATE(yourDateColumnName)='anyDate'; To understand the above syntax, let us first create a table.

Làm cách nào để lọc các bản ghi trong mysql?

Cách lọc kết quả truy vấn trong MySQL..
Introduction..
Sử dụng mệnh đề WHERE để xác định tiêu chí phù hợp ..
Sử dụng nhóm theo mệnh đề để tóm tắt nhiều bản ghi ..
Sử dụng mệnh đề có để lọc các nhóm hồ sơ ..
Sử dụng mệnh đề giới hạn để đặt số lượng bản ghi tối đa ..

Làm cách nào để chọn một ngày cụ thể trong SQL?

Ngày chọn SQL..
Chọn* Từ ..
Table_Name WHERE CAST (Datediff (Day, 0, YourDate) là DateTime) = '2012-12-12'.

Làm thế nào có thể nhận được ngày ở định dạng dd mm yyyy trong mysql?

Sau đây là đầu ra.Sau đây là truy vấn định dạng ngày đến Yyyy-MM-DD.mysql> chọn str_to_date (logindate, '%d.%m.mysql> select str_to_date(LoginDate,'%d. %m.