Vấn đề:
Bạn muốn nhận được sự khác biệt, tính bằng ngày, giữa hai ngày trong cơ sở dữ liệu MySQL.
Ví dụ:
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
.
id | tên | buy_date | expiration_date |
---|---|---|---|
1 | bánh mì | 2019-07-20 | ngày 28 tháng 8 năm 2019 |
2 | bơ | 2018-07-30 | 2019-08-10 |
3 | sữa | 2019-01-12 | 2019-01-13 |
4 | sữa chua | 2019-02-25 | 2019-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 từ ngày hết hạn đến ngày mua.
Giải pháp:
Chúng tôi sẽ sử dụng DATEDIFF()
hàm số. Đâ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:
name | ngày |
---|---|
bánh mì | 33 |
bơ | 376 |
sữa | 1 |
sữa chua | -1 |
Thảo luận:
Sử dụng DATEDIFF()
hàm để truy xuất số ngày giữa hai ngày trong cơ sở dữ liệu MySQL. Hàm này có hai đối số:
- Ngày kết thúc. (Trong ví dụ của chúng tôi, đó là
expiration_date
cột.) - Ngày bắt đầu. (Trong ví dụ của chúng tôi, đó là
purchase_date
cột.)
Các đối số này có thể là giá trị ngày / giờ, biểu thức trả về giá trị ngày / giờ hoặc các cột của kiểu dữ liệu ngày hoặc giờ.
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 là ‘2019-08-10’; sau khi mua, nó có thể được ăn trong 376 ngày. Lưu ý rằng sữa chua được mua là sản phẩm lỗi thời:số ngày chênh lệch là -1 và ngày mua muộn hơn ngày hết hạn.