Sự khác biệt giữa MySQL SUBDATE()
và DATE_SUB()
các hàm giống hệt như sự khác biệt giữa ADDDATE()
và DATE_ADD()
chức năng. Một hàm cho phép hai dạng cú pháp khác nhau, trong khi hàm kia chỉ cho phép một.
Bài viết này thể hiện sự khác biệt.
Cú pháp
Đây là cú pháp cho từng hàm.
DATE_SUB ()
DATE_SUB()
cú pháp như thế này.
DATE_SUB(date,INTERVAL expr unit)
Điều này chấp nhận một giá trị ngày, theo sau là INTERVAL
từ khóa và biểu thức và đơn vị để trừ ngày được cung cấp bởi đối số đầu tiên.
SUBDATE ()
SUBDATE()
cú pháp cho phép hai hình thức. Bạn có thể sử dụng một trong các hình thức sau.
SUBDATE(date,INTERVAL expr unit)
Hoặc
SUBDATE(expr,days)
Biểu mẫu đầu tiên giống hệt như DATE_SUB()
và khi bạn sử dụng cú pháp này, SUBDATE()
hàm là từ đồng nghĩa với DATE_SUB()
.
Tuy nhiên, dạng cú pháp thứ hai chỉ khả dụng khi sử dụng SUBDATE()
và nó cho phép bạn sử dụng cách viết tắt để chỉ định số ngày cần trừ đi từ ngày.
Ví dụ
Dưới đây là một ví dụ về việc sử dụng cả hai hàm để trừ một số ngày nhất định cho cùng một ngày.
SET @date = '2023-12-10'; SELECT DATE_SUB(@date, INTERVAL 5 DAY) AS 'DATE_SUB', SUBDATE(@date, INTERVAL 5 DAY) AS 'SUBDATE 1', SUBDATE(@date, 5) AS 'SUBDATE 2';
Kết quả:
+------------+------------+------------+ | DATE_SUB | SUBDATE 1 | SUBDATE 2 | +------------+------------+------------+ | 2023-12-05 | 2023-12-05 | 2023-12-05 | +------------+------------+------------+
Tuy nhiên, nếu chúng tôi cố gắng sử dụng dạng cú pháp thay thế với DATE_SUB()
chúng tôi gặp lỗi.
SET @date = '2023-12-10'; SELECT DATE_SUB(@date, 5) AS 'DATE_SUB 2';
Kết quả:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5) AS 'DATE_SUB 2'' at line 1
Và tất nhiên, lý do cho lỗi này là vì DATE_SUB()
không hỗ trợ cú pháp đó.
Lưu ý rằng biểu mẫu cú pháp thứ hai này chỉ có thể được sử dụng để trừ ngày từ ngày. Nếu bạn cần trừ bất kỳ đơn vị nào khác (ví dụ:tháng), bạn sẽ cần sử dụng cú pháp đầu tiên.