Sự khác biệt mysql giữa hai ngày trong năm, tháng và ngày

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày, tính bằng năm

CHỌN DATEDIFF(năm, '25/08/2017', '25/08/2011') AS DateDiff;

Tự mình thử »


Định nghĩa và cách sử dụng

Hàm DATEDIFF() trả về sự khác biệt giữa hai ngày

cú pháp

DATEDIFF(khoảng thời gian, ngày1, ngày2)

Giá trị tham số

Tham sốDescriptionintervalBắt buộc. Phần trở lại. Có thể là một trong các giá trị sau
  • năm, yyyy, yy = Năm
  • quý, qq, q = Quý
  • tháng, mm, m = tháng
  • dayofyear = Ngày trong năm
  • ngày, dy, y = Ngày
  • tuần, ww, wk = Tuần
  • ngày trong tuần, dw, w = Ngày trong tuần
  • giờ, hh = giờ
  • phút, mi, n = Phút
  • thứ hai, ss, s = Thứ hai
  • mili giây, ms = Mili giây
date1, date2Bắt buộc. Hai ngày để tính chênh lệch giữa

chi tiết kỹ thuật

hoạt động trong. Máy chủ SQL (bắt đầu từ năm 2008), Cơ sở dữ liệu Azure SQL, Kho dữ liệu Azure SQL, Kho dữ liệu song song

Thêm ví dụ

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày tháng

CHỌN DATEDIFF(tháng, '25/08/2017', '25/08/2011') AS DateDiff;

Tự mình thử »

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày, tính bằng giờ

CHỌN DATEDIFF(giờ, '25/08/2017 07. 00', '25/08/2017 12. 45') AS DateDiff;

Tự mình thử »

Trong MySQL, bạn có thể sử dụng hàm

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
4 để tìm sự khác biệt giữa hai ngày. Cách nó hoạt động là, bạn cung cấp hai đối số (một đối số cho mỗi ngày) và
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
4 sẽ trả về số ngày giữa hai ngày

Ví dụ dưới đây

cú pháp

Đầu tiên, đây là cú pháp

DATEDIFF(expr1,expr2)

Trong đó

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
1 là ngày đầu tiên và
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
2 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ố xung quanh, chúng ta sẽ 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 các giá trị ngày giờ, chỉ phần ngày được sử dụng để so sánh các ngày. Thí 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ả

________số 8

Ví dụ 4 – Truy vấn cơ sở dữ liệu

Đây là một ví dụ về việc sử dụng

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
4 trong truy vấn cơ sở dữ liệu. Trong ví dụ này, tôi so sánh cột
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
4 với ngày hôm nay (bằng cách sử dụng hàm
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
5 để trả về ngày hôm nay)

Hôm nọ, tôi phải nhanh chóng lấy một số thống kê từ bảng cơ sở dữ liệu. Tôi cần xác định thời gian trung bình để chạy các công việc trong hệ thống xếp hàng. Để làm được điều này, tôi đã sử dụng các phương pháp chênh lệch múi giờ của MySQL. Tôi nghĩ rằng tôi sẽ chia sẻ cách các phương pháp này hoạt động và cách tôi triển khai chúng

Để tính toán sự khác biệt giữa hai ngày, MySQL cung cấp cho chúng tôi hai phương pháp khác nhau.

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
7 và
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
8. Cái bạn sử dụng tùy thuộc vào cách bạn muốn định dạng sự khác biệt kết quả

DẤU THỜI GIAN

Phương thức này trả về chênh lệch giữa hai ngày theo đơn vị được cung cấp làm tham số đầu tiên. Ví dụ: nếu chúng tôi muốn biết sự khác biệt giữa hai ngày tính bằng giây

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
1

Điều này tính toán

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
9 trong vài giây

Các đơn vị có thể là bất kỳ một trong những điều sau đây. FRAC_SECOND (micro giây), GIÂY, PHÚT, GIỜ, NGÀY, TUẦN, THÁNG, QUÝ hoặc NĂM

Ngày được truyền cho phương thức này không cần phải cùng loại. Một cái có thể là DATETIME và cái kia là NGÀY. Nếu cột có loại NGÀY thì nó sẽ được coi là có thời gian nửa đêm

TIMEDIFF

Phương thức này trả về sự khác biệt giữa hai ngày được định dạng là

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
0

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
2

Giống như

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
7, điều này tính toán
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
9, nhưng lưu ý rằng các tham số ngày được gọi theo thứ tự ngược lại

Không giống như

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
7, cả hai ngày cần phải cùng loại

Một ví dụ thực tế

Bây giờ chúng ta đã thiết lập cách sử dụng các phương thức chênh lệch múi giờ của MySQL, hãy xem xét một trường hợp sử dụng thực tế

Như tôi đã đề cập lúc đầu, tôi cần kiểm tra xem hàng đợi của mình mất bao lâu để xử lý công việc. Tôi có một bảng queued_t task chứa thông tin chi tiết về các tác vụ nền. Sử dụng

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
8, tôi có thể xác định các công việc chạy dài nhất và ngắn nhất trong tháng trước

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
3

Điều này đã cho tôi phạm vi thời gian chạy cho hàng đợi của tôi

Sau đó, tôi có thể sử dụng

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
7 để tính thời gian trung bình, sử dụng phạm vi tôi vừa tính để chọn một đơn vị thời gian thích hợp