Khi sử dụng MySQL, chúng tôi có tùy chọn sử dụng ADDDATE()
và DATE_ADD()
bất cứ khi nào chúng ta muốn thêm một khoảng thời gian cụ thể vào một ngày nhất định. Cả hai chức năng này đều hoạt động giống nhau, nhưng có một điểm khác biệt giữa chúng.
Bài viết này trình bày sự khác biệt giữa ADDDATE()
và DATE_ADD()
trong MySQL.
Cú pháp
Sự khác biệt giữa hai hàm này là ở cú pháp của chúng. Một chức năng cho phép hai biểu mẫu khác nhau, trong khi chức năng kia chỉ cho phép một biểu mẫu.
DATE_ADD ()
DATE_ADD()
cú pháp như thế này.
DATE_ADD(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ị để thêm vào ngày được cung cấp bởi đối số đầu tiên.
THÊM ()
ADDDATE()
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.
ADDDATE(date,INTERVAL expr unit)
Hoặc
ADDDATE(expr,days)
Biểu mẫu đầu tiên giống hệt như DATE_ADD()
cú pháp. Trên thực tế, khi sử dụng cú pháp này, ADDDATE()
hàm là từ đồng nghĩa với DATE_ADD()
.
Tuy nhiên, đây là dạng thứ hai của cú pháp giúp tách biệt hai hàm. Biểu mẫu thứ hai này chỉ khả dụng khi sử dụng ADDDATE()
và nó cho phép bạn sử dụng cách viết tắt để chỉ định số ngày để thêm vào ngày.
Ví dụ
Dưới đây là một ví dụ để chứng minh sự khác biệt giữa hai biểu mẫu.
SET @date = '2020-10-01'; SELECT DATE_ADD(@date, INTERVAL 2 DAY) AS 'DATE_ADD', ADDDATE(@date, INTERVAL 2 DAY) AS 'ADDDATE 1', ADDDATE(@date, 2) AS 'ADDDATE 2';
Kết quả:
+------------+------------+------------+ | DATE_ADD | ADDDATE 1 | ADDDATE 2 | +------------+------------+------------+ | 2020-10-03 | 2020-10-03 | 2020-10-03 | +------------+------------+------------+
Nhưng nếu chúng tôi cố gắng sử dụng biểu mẫu thứ hai vào ADD_DATE()
, chúng tôi gặp lỗi:
SET @date = '2020-10-01'; SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 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 '2) AS 'DATE_ADD 2'' at line 1
Điều này là do hàm này không hỗ trợ cú pháp đó.