Trong MariaDB, DATE_SUB()
là một chức năng ngày và giờ được tích hợp sẵn cho phép bạn trừ một số tiền cho một ngày.
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 vào ngày, thay vì trừ vào đó.
Cú pháp
Cú pháp như sau:
DATE_SUB(date,INTERVAL expr unit)
Nơi date
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.).
Ví dụ
Đây là một ví dụ cơ bản:
SELECT DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Kết quả:
+--------------------------------------------------+ | DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR) | +--------------------------------------------------+ | 2021-05-31 09:00:00 | +--------------------------------------------------+
Điều này giống như làm như sau:
SELECT '2021-05-31 10:00:00' - INTERVAL 1 HOUR;
Kết quả:
+-----------------------------------------+ | '2021-05-31 10:00:00' - INTERVAL 1 HOUR | +-----------------------------------------+ | 2021-05-31 09:00:00 | +-----------------------------------------+
Khoảng thời gian phủ định
Cung cấp khoảng âm thêm số tiền đó kể từ ngày.
Ví dụ:
SELECT DATE_SUB('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Kết quả:
+---------------------------------------------------+ | DATE_SUB('2021-05-31 10:00:00', INTERVAL -1 HOUR) | +---------------------------------------------------+ | 2021-05-31 11: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
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 YEAR) AS YEAR,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MONTH) AS MONTH,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 DAY) AS DAY,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 HOUR) AS HOUR,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 SECOND) AS SECOND,
DATE_SUB('2021-05-10 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Kết quả (sử dụng đầu ra dọc):
YEAR: 2020-05-10 10:00:00 MONTH: 2021-04-10 10:00:00 DAY: 2021-05-09 10:00:00 HOUR: 2021-05-10 09:00:00 MINUTE: 2021-05-10 09:59:00 SECOND: 2021-05-10 09:59:59 MICROSECOND: 2021-05-10 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
DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_SUB('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Kết quả:
+---------------------+---------------------+---------------------+ | YEAR_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 DATE_SUB(null, INTERVAL 1 YEAR);
Kết quả:
+---------------------------------+ | DATE_SUB(null, INTERVAL 1 YEAR) | +---------------------------------+ | NULL | +---------------------------------+
Thiếu đối số
Đang gọi DATE_SUB()
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 DATE_SUB();
Kết quả:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1