Trong MariaDB, SUBDATE()
là một hàm ngày và giờ được tích hợp sẵn để trừ một số tiền cho một ngày nhất định.
Nó cho phép bạn thay đổi ngày bằng cách chỉ định ngày, đơn vị cần trừ và số tiền cần trừ. Bạn có thể chuyển một số tiền âm để thêm cho đến ngày, thay vì trừ vào ngày đó.
SUBDATE()
cũng có cú pháp phím tắt cho phép bạn chỉ định số ngày cần trừ đi.
Cú pháp
SUBDATE()
hàm có hai cú pháp.
Cú pháp 1:
SUBDATE(expr,days)
Ở đâu expr
là ngày và days
là số ngày để trừ đi.
Cú pháp 2:
SUBDATE(date,INTERVAL expr unit)
Nơi days
là ngày thay đổi, expr
là số tiền cần trừ và unit
là đơn vị ngày / giờ để trừ (ví dụ:giây, phút, v.v.).
Khi sử dụng cú pháp này, SUBDATE()
là từ đồng nghĩa với DATE_SUB()
.
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 SUBDATE('2021-05-01', 1);
Kết quả:
+ -------------------------- + | SUBDATE ('2021-05-01', 1) | + -------------------------- + | 2021-04-30 | + -------------------------- +
Chúng tôi cũng có thể bao gồm phần thời gian nếu được yêu cầu:
SELECT SUBDATE('2021-05-01 10:00:00', 1);
Kết quả:
+ ----------------------------------- + | SUBDATE ('2021-05-01 10:00:00', 1) | + ------------------------------- ---- + | 2021-04-30 10:00:00 | + ----------------------------------- +Dưới đây là hai cách thay thế để làm điều tương tự:
SELECT DATE_SUB('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-04-30 10:00:00 | 2021-04-30 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 SUBDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Kết quả:
+ ---------------------------------------------- --- + | SUBDATE ('2021-05-31 10:00:00', PHỎNG VẤN 1 GIỜ) | + ----------------------------- -------------------- + | 2021-05-31 09:00:00 | + -------------------------------------- ----------- +Cú pháp này cho phép chúng tôi trừ các đơn vị khác cho ngày (tức là không chỉ ngày). Ở đây, tôi đã trừ một giờ cho ngày, nhưng tôi có thể dễ dàng trừ phút, giây, tháng, ngày, năm, v.v. Ví dụ sau.
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_SUB('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 09:00:00 | 2021-05-31 09:00:00 | + --------------------- + ---------------- ----- +Khoảng thời gian phủ định
Cung cấp khoảng âm thêm số tiền đó cho đến ngày.
Ví dụ:
SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Kết quả:
+ ---------------------------------------------- ---- + | SUBDATE ('2021-05-31 10:00:00', INTERVAL -1 GIỜ) | + ---------------------------- ---------------------- + | 2021-05-31 11:00:00 | + -------------------------------------- ------------ +Các đơn vị khác
Dưới đây là một ví dụ trừ khoảng 1 cho các đơn vị ngày và giờ khác nhau:
SELECT SUBDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR, SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH, SUBDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY, SUBDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR, SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE, SUBDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND, SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Kết quả (sử dụng đầu ra dọc):
NĂM:2020-05-01 10:00:00 THÁNG:2021-04-01 10:00:00 NGÀY:2021-04-30 10:00:00 GIỜ:2021-05-01 09:00:00 PHÚT:2021-05-01 09:59:00 THỨ HAI:2021-05-01 09:59:59 PHÚT GIÂY:2021-05-01 09:59:59.999999Đơ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 SUBDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH", SUBDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND", SUBDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Kết quả:
+ --------------------- + --------------------- + - ------------------- + | NĂM_MONTH | HOUR_SECOND | DAY_MINUTE | + --------------------- + --------------------- + --- ------------------ + | 2020-03-01 10:00:00 | 2021-05-01 08:34:25 | 2021-05-01 08:30:00 | + --------------------- + ---------------- ----- + --------------------- +Ngày trống
Chuyển
null
cho ngày trả vềnull
:SELECT SUBDATE(null, INTERVAL 1 YEAR);
Kết quả:
+ -------------------------------- + | SUBDATE (null, INTERVAL 1 NĂM) | + -------------------------------- + | NULL | + -------------------------------- +Thiếu đối số
Gọi
SUBDATE()
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 SUBDATE();
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