Trong MariaDB, SUBTIME()
là một hàm ngày và giờ được tích hợp sẵn để trừ một số tiền khỏi biểu thức thời gian hoặc ngày giờ.
Nó cho phép bạn thay đổi biểu thức thời gian hoặc ngày giờ bằng cách chuyển biểu thức đó, cũng như biểu thức thời gian để trừ khỏi biểu thức đó. Bạn có thể chuyển một số tiền âm nếu bạn cần thêm sang biểu thức thời gian.
Cú pháp
Cú pháp như sau:
SUBTIME(expr1,expr2)
Trong đó expr1
là một biểu thức thời gian hoặc ngày giờ và expr2
là một biểu thức thời gian.
Ví dụ
Đây là một ví dụ:
SELECT SUBTIME('10:00:00', '02:30:45');
Kết quả:
+---------------------------------+ | SUBTIME('10:00:00', '02:30:45') | +---------------------------------+ | 07:29:15 | +---------------------------------+
Biểu thức ngày giờ
Đối số đầu tiên cũng có thể là một biểu thức datetime:
SELECT SUBTIME('2021-05-01 10:00:00', '22:30:45');
Kết quả:
+--------------------------------------------+ | SUBTIME('2021-05-01 10:00:00', '22:30:45') | +--------------------------------------------+ | 2021-04-30 11:29:15 | +--------------------------------------------+
Trong trường hợp này, đã trừ đủ thời gian để kéo ngày trở lại ngày và tháng trước đó.
Biểu thức thời gian ở định dạng lỏng hơn
MariaDB cho phép ấn định thời gian ở các định dạng lỏng hơn, chẳng hạn như giảm các số 0 ở đầu và cung cấp một giá trị trong ngày.
Do đó, chúng ta có thể làm điều này:
SELECT SUBTIME('2021-05-01 10:00:00', '366 1:1:1.123456');
Kết quả:
+----------------------------------------------------+ | SUBTIME('2021-05-01 10:00:00', '366 1:1:1.123456') | +----------------------------------------------------+ | 2020-04-30 08:58:58.876544 | +----------------------------------------------------+
Khoảng thời gian phủ định
Cung cấp khoảng âm cho phần ngày thêm số tiền đó cho thời gian / ngày giờ.
Ví dụ:
SELECT SUBTIME('2021-05-01 10:00:00', '-366 1:1:1.123456');
Kết quả:
+-----------------------------------------------------+ | SUBTIME('2021-05-01 10:00:00', '-366 1:1:1.123456') | +-----------------------------------------------------+ | 2022-05-02 11:01:01.123456 | +-----------------------------------------------------+
Đối số rỗng
Nếu bất kỳ đối số nào là null
, kết quả là null
:
SELECT
SUBTIME('10:00:00', null),
SUBTIME(null, '02:30:45'),
SUBTIME(null, null);
Kết quả:
+---------------------------+---------------------------+---------------------+ | SUBTIME('10:00:00', null) | SUBTIME(null, '02:30:45') | SUBTIME(null, null) | +---------------------------+---------------------------+---------------------+ | NULL | NULL | NULL | +---------------------------+---------------------------+---------------------+
Thiếu đối số
Đang gọi SUBTIME()
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 SUBTIME();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBTIME'