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_date
và expiration_date
Đố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-1Thả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ố
- ngày kết thúc. [Trong ví dụ của chúng tôi, đó là cột
expiration_date
. ] - 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ánhNhư 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`