Trong MySQL, bạn có thể sử dụng DATEDIFF()
hàm để tìm sự khác biệt giữa hai ngày. Cách hoạt động của nó là bạn cung cấp hai đối số (một đối số cho mỗi ngày) và DATEDIFF()
sẽ trả về số ngày giữa hai ngày.
Ví dụ bên dưới.
Cú pháp
Đầu tiên, đây là cú pháp:
DATEDIFF(expr1,expr2)
Trong đó expr1
là ngày đầu tiên và expr2
là ngày thứ hai.
Ví dụ 1 - Cách sử dụng cơ bản
Đây là một ví dụ để chứng minh.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Kết quả:
+--------+ | Result | +--------+ | 29 | +--------+
Trong ví dụ này, ngày đầu tiên muộn hơn ngày thứ hai. Trong trường hợp này, chúng tôi nhận được giá trị trả về dương.
Ví dụ 2 - So sánh với Ngày trước đó
Ngày đầu tiên không nhất thiết phải muộn hơn ngày thứ hai. Bạn có thể sử dụng ngày sớm hơn cho đối số đầu tiên và nó sẽ trả về giá trị âm. Nếu chúng ta hoán đổi hai đối số đó, chúng ta nhận được như sau:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Kết quả:
+--------+ | Result | +--------+ | -29 | +--------+
Ví dụ 3 - Giá trị ngày giờ
Khi được sử dụng với datetime giá trị, chỉ phần ngày được sử dụng để so sánh các ngày. Ví dụ:
SELECT DATEDIFF('2020-10-30 23:59:59', '2020-10-01') AS 'Result 1', DATEDIFF('2020-10-01 23:59:59', '2020-10-30') AS 'Result 2';
Kết quả:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Ví dụ 4 - Truy vấn Cơ sở dữ liệu
Đây là một ví dụ về việc sử dụng DATEDIFF()
trong một truy vấn cơ sở dữ liệu. Trong ví dụ này, tôi so sánh payment_date
cột với ngày hôm nay (bằng cách sử dụng CURDATE()
hàm để trả về ngày hôm nay):
USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Kết quả:
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+