Trong MariaDB, ADDDATE()
là một hàm ngày và giờ được tích hợp sẵn để thực hiện số học ngày tháng.
Nó cho phép bạn thay đổi ngày bằng cách chỉ định ngày, đơn vị cần thêm và số lượng cần thêm. Bạn có thể chuyển một số tiền âm nếu bạn cần trừ ngày trong một khoảng thời gian nhất định.
ADDDATE()
cũng có một cú pháp phím tắt cho phép bạn thêm một số ngày nhất định vào ngày.
Cú pháp
ADDDATE()
hàm có hai cú pháp.
Cú pháp 1:
ADDDATE(expr,days)
Ở đâu expr
là ngày và days
là số ngày cần thêm.
Cú pháp 2:
ADDDATE(date,INTERVAL expr unit)
Nơi days
là ngày thay đổi, expr
là số tiền cần thêm và unit
là đơn vị để thêm (ví dụ:giây, phút, v.v.).
Khi sử dụng cú pháp này, ADDDATE()
là từ đồng nghĩa với DATE_ADD()
.
Ví dụ - Cú pháp 1
Dưới đây là một ví dụ về việc sử dụng cú pháp đầu tiên:
SELECT ADDDATE('2021-05-01', 1);
Kết quả:
+ -------------------------- + | THÊM ('2021-05-01', 1) | + -------------------------- + | 2021-05-02 | + -------------------------- +
Chúng tôi cũng có thể bao gồm phần thời gian nếu được yêu cầu:
SELECT ADDDATE('2021-05-01 10:00:00', 1);
Kết quả:
+ ----------------------------------- + | THÊM ('2021-05-01 10:00:00', 1) | + ------------------------------- ---- + | 2021-05-02 10:00:00 | + ----------------------------------- +Dưới đây là hai cách thay thế để làm điều tương tự:
SELECT DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1", '2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2";
Kết quả:
+ --------------------- + --------------------- + | Kết quả 1 | Kết quả 2 | + --------------------- + --------------------- + | 2021-05-02 10:00:00 | 2021-05-02 10:00:00 | + --------------------- + ---------------- ----- +Ví dụ - Cú pháp 2
Dưới đây là một ví dụ về việc sử dụng cú pháp thứ hai:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Kết quả:
+ ---------------------------------------------- --- + | THÊM ('2021-05-31 10:00:00', PHỎNG VẤN 1 GIỜ) | + ----------------------------- -------------------- + | 2021-05-31 11:00:00 | + -------------------------------------- ----------- +Cú pháp này cho phép chúng tôi thêm các đơn vị khác vào ngày (tức là không chỉ ngày). Ở đây, tôi đã thêm một giờ vào ngày, nhưng tôi có thể dễ dàng thêm phút, giây, tháng, ngày, năm, v.v. Tiếp tục đọc để biết các ví dụ.
Dưới đây là hai phương pháp thay thế để đạt được kết quả tương tự như ví dụ trên:
SELECT DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1", '2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2";
Kết quả:
+ --------------------- + --------------------- + | Kết quả 1 | Kết quả 2 | + --------------------- + --------------------- + | 2021-05-31 11:00:00 | 2021-05-31 11:00:00 | + --------------------- + ---------------- ----- +Khoảng thời gian phủ định
Cung cấp một khoảng âm sẽ trừ đi số tiền đó từ ngày.
Ví dụ:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Kết quả:
+ ---------------------------------------------- ---- + | THÊM ('2021-05-31 10:00:00', INTERVAL -1 GIỜ) | + ---------------------------- ---------------------- + | 2021-05-31 09:00:00 | + -------------------------------------- ------------ +Các đơn vị khác
Dưới đây là một ví dụ thêm khoảng thời gian là 1 vào các đơn vị ngày và giờ khác nhau:
SELECT ADDDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Kết quả (sử dụng đầu ra dọc):
NĂM:2022-05-01 10:00:00 THÁNG:2021-06-01 10:00:00 NGÀY:2021-05-02 10:00:00 GIỜ:2021-05-01 11:00:00 PHÚT:2021-05-01 10:01:00 THỨ HAI:2021-05-01 10:00:01 PHÚT GIÂY:2021-05-01 10:00:00.000001Đơn vị tổng hợp
Dưới đây là một ví dụ sử dụng các đơn vị tổng hợp:
SELECT ADDDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH", ADDDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND", ADDDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Kết quả:
+ --------------------- + --------------------- + - ------------------- + | NĂM_MONTH | HOUR_SECOND | DAY_MINUTE | + --------------------- + --------------------- + --- ------------------ + | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | + --------------------- + ---------------- ----- + --------------------- +Ngày trống
Chuyển
null
cho ngày trả vềnull
:SELECT ADDDATE(null, INTERVAL 1 YEAR);
Kết quả:
+ -------------------------------- + | THÊM (rỗng, INTERVAL 1 NĂM) | + -------------------------------- + | NULL | + -------------------------------- +Thiếu đối số
Đang gọi
ADDDATE()
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 ADDDATE();
Kết quả:
ERROR 1064 (42000):Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MariaDB của bạn để biết cú pháp phù hợp để sử dụng gần ')' tại dòng 1