Lọc bản ghi giữa hai lần PHP MySQL

Cơ sở dữ liệu của chúng tôi có một bảng tên là food với dữ liệu trong các cột id, name, purchase_dateexpiration_date

idnamepurchase_dateexpiration_date1bread2019-07-202019-08-222bơ2018-07-302019-08-103sữa2019-01-122019-01-134sữa chua2019-02-252019-02-24

Đối với mỗi sản phẩm thực phẩm, hãy lấy tên của sản phẩm và số ngày giữa ngày hết hạn và ngày mua

Giải pháp

Chúng ta sẽ sử dụng hàm DATEDIFF[]. Đây là truy vấn bạn sẽ viết

SELECT
  name,
  DATEDIFF[expiration_date, purchase_date] AS days
FROM food;

Đây là kết quả của truy vấn

tên bánh mì ngày33bơ376sữa1sữa chua-1

Thảo luận

Sử dụng hàm DATEDIFF[] để lấy số ngày giữa hai ngày trong cơ sở dữ liệu MySQL. Hàm này nhận hai đối số

  1. ngày kết thúc. [Trong ví dụ của chúng tôi, đó là cột expiration_date. ]
  2. Ngày bắt đầu. [Trong ví dụ của chúng tôi, đó là cột purchase_date. ]

Các đối số này có thể là giá trị ngày/ngày giờ, biểu thức trả về giá trị ngày/ngày giờ hoặc cột của kiểu dữ liệu ngày giờ hoặc ngày tháng

Hàm này trừ ngày bắt đầu từ ngày kết thúc và trả về số ngày dưới dạng số nguyên. Trong ví dụ của chúng tôi, bơ đã được mua vào '2018-07-30', nhưng ngày hết hạn của nó là '2019-08-10'; . Lưu ý rằng sữa chua đã được mua như một sản phẩm lỗi thời. chênh lệch số ngày là -1 và ngày mua của nó muộn hơn ngày hết hạn

Các câu hỏi rất thường gặp, cách chọn dữ liệu giữa hai ngày trong MySQL hoặc PHP. Có thể có nhiều cách để làm điều này, nhưng chúng ta sẽ thấy một số cách dễ dàng và tốt. Chung tôi hy vọng bạn thich no. Vì vậy, bạn đã sẵn sàng để làm điều đó?

Chọn dữ liệu từ cơ sở dữ liệu giữa hai ngày

01 Sử dụng BETWEEN…. VÀ…. Toán tử so sánh

Như tên gợi ý, Nó được sử dụng để kiểm tra xem một giá trị có nằm trong một phạm vi hay không

cú pháp

`your_column_name` BETWEEN 'start-value' AND 'end-value'

Ví dụ về cú pháp

`order_date` BETWEEN '2020-04-05' AND '2020-04-10' // Retrun data including 05-04-2020 to 10-04-2020

`order_date` BETWEEN '2020-04-05' AND CURDATE[] // Retrun data including 05-04-2020 to Current Date

Xin lưu ý rằng toán tử so sánh trả về các bản ghi bao gồm cả giá trị đầu và cuối

Hãy cùng xem một số ví dụ thực tế về BETWEEN…AND…. toán tử so sánh

Tên bảng. gọi món

Giả sử rằng bạn có bảng đơn hàng sau trong cơ sở dữ liệu của mình và bạn muốn tìm nạp các bản ghi trong khoảng thời gian từ ‘2020-04-15’ đến ‘2020-04-30’

ID         | user_id| qty | order_date |
-----------+---------+-----+------------+
1          | 5      | 7   | 2020-04-06 |
2          | 7      | 14  | 2020-04-17 |
3          | 8      | 1   | 2020-04-20 |
4          | 100    | 5   | 2020-04-25 |
5          | 101    | 7   | 2020-04-30 |
6          | 17     | 8   | 2020-04-15 |
7          | 25     | 2   | 2020-05-25 |
8          | 24     | 1   | 2020-05-15 |
9          | 10     | 10  | 2020-05-28 |

Vì vậy, truy vấn sẽ giống như dưới đây

SELECT * FROM `order` WHERE `order_date` BETWEEN '2020-04-15' AND '2020-04-30'

đầu ra

ID         | user_id| qty | order_date |
-----------+---------+-----+------------+
2          | 7      | 14  | 2020-04-17 |
3          | 8      | 1   | 2020-04-20 |
4          | 100    | 5   | 2020-04-25 |
5          | 101    | 7   | 2020-04-30 |

02 Sử dụng > AND < Toán tử so sánh

Bạn cũng có thể sử dụng toán tử so sánh & để tìm nạp bản ghi giữa hai ngày

cú pháp

`column-name` >= 'start-value' AND `column-name` = '2020-04-15' AND `order_date` 

Chủ Đề