Trong MariaDB, PERIOD_DIFF()
là một hàm ngày và giờ được tích hợp sẵn trả về số tháng giữa hai khoảng thời gian.
Cú pháp
Cú pháp như sau:
PERIOD_DIFF(P1,P2)
Ở đâu P1
và P2
là các khoảng thời gian để có được sự khác biệt giữa.
Cả hai đối số đều có định dạng YYMM hoặc YYYYMM. Chúng không phải là giá trị ngày tháng.
Ví dụ
Đây là một ví dụ:
SELECT PERIOD_DIFF(202108, 202101);
Kết quả:
+-----------------------------+ | PERIOD_DIFF(202108, 202101) | +-----------------------------+ | 7 | +-----------------------------+
Trong ví dụ này, có bảy tháng chênh lệch giữa hai giai đoạn.
Chuyển đổi thứ tự
Nếu khoảng thời gian đầu tiên là khoảng thời gian sớm hơn khoảng thời gian thứ hai, kết quả là một giá trị âm.
Đây là những gì sẽ xảy ra khi tôi chuyển đổi thứ tự của các đối số trong ví dụ trước:
SELECT PERIOD_DIFF(202101, 202108);
Kết quả:
+-----------------------------+ | PERIOD_DIFF(202101, 202108) | +-----------------------------+ | -7 | +-----------------------------+
Năm hai chữ số
Nếu bất kỳ đối số nào chứa năm hai chữ số, các giá trị từ 00 đến 69 được chuyển đổi thành từ 2000 đến 2069, trong khi các giá trị từ 70 được chuyển đổi thành 1970 trở lên.
Ví dụ:
SELECT
PERIOD_DIFF(6911, 6912),
PERIOD_DIFF(6911, 7001);
Kết quả:
+-------------------------+-------------------------+ | PERIOD_DIFF(6911, 6912) | PERIOD_DIFF(6911, 7001) | +-------------------------+-------------------------+ | -1 | 1198 | +-------------------------+-------------------------+
Thiếu đối số
Gọi PERIOD_DIFF()
với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào, dẫn đến lỗi:
SELECT PERIOD_DIFF();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'PERIOD_DIFF'
Và một ví dụ khác:
SELECT PERIOD_DIFF( 6912 );
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'PERIOD_DIFF'