Trong MariaDB, TIMESTAMPADD()
là một hàm ngày và giờ được tích hợp sẵn để thêm một khoảng biểu thức số nguyên vào một biểu thức ngày tháng hoặc ngày giờ nhất định.
Cú pháp
Cú pháp như sau:
TIMESTAMPADD(unit,interval,datetime_expr)
Đơn vị unit
là một trong các giá trị sau:
-
MICROSECOND
-
SECOND
-
MINUTE
-
HOUR
-
DAY
-
WEEK
-
MONTH
-
QUARTER
-
YEAR
Các đơn vị có thể tùy chọn có tiền tố là SQL_TSI_
.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT TIMESTAMPADD(DAY, 10, '2030-02-01');
Kết quả:
+-------------------------------------+ | TIMESTAMPADD(DAY, 10, '2030-02-01') | +-------------------------------------+ | 2030-02-11 | +-------------------------------------+
Giá trị ngày giờ
Dưới đây là một ví dụ về việc chuyển một giá trị ngày giờ:
SELECT TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45');
Kết quả:
+-----------------------------------------------+ | TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45') | +-----------------------------------------------+ | 2030-02-01 20:30:45 | +-----------------------------------------------+
Thêm SQL_TSI_
Tiền tố
Đơn vị có thể bao gồm một SQL_TSI_
tiền tố nếu được yêu cầu:
SELECT TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01');
Kết quả:
+----------------------------------------------+ | TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01') | +----------------------------------------------+ | 2040-02-01 | +----------------------------------------------+
Micro giây
Dưới đây là một ví dụ thêm micro giây:
SELECT TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45');
Kết quả:
+----------------------------------------------------------+ | TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45') | +----------------------------------------------------------+ | 2030-02-01 10:30:45.123456 | +----------------------------------------------------------+
Khoảng thời gian phủ định
Khoảng âm là hợp lệ:
Ví dụ:
SELECT TIMESTAMPADD(YEAR, -10, '2030-02-01');
Kết quả:
+---------------------------------------+ | TIMESTAMPADD(YEAR, -10, '2030-02-01') | +---------------------------------------+ | 2020-02-01 | +---------------------------------------+
Ngày hiện tại
Chúng ta có thể chuyển NOW()
làm đối số datetime để sử dụng ngày và giờ hiện tại:
SELECT
NOW(),
TIMESTAMPADD(DAY, 10, NOW());
Kết quả:
+---------------------+------------------------------+ | NOW() | TIMESTAMPADD(DAY, 10, NOW()) | +---------------------+------------------------------+ | 2021-05-28 09:58:56 | 2021-06-07 09:58:56 | +---------------------+------------------------------+
Thiếu đối số
Đang gọi TIMESTAMPADD()
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 TIMESTAMPADD();
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
Và một ví dụ khác:
SELECT TIMESTAMPADD(10, '2020-12-09');
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 '10, '2020-12-09')' at line 1