В MariaDB, TIMESTAMPADD()
е вградена функция за дата и час, която добавя интервал на целочислен израз към даден израз за дата или час.
Синтаксис
Синтаксисът е така:
TIMESTAMPADD(unit,interval,datetime_expr)
Където unit
е една от следните стойности:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
По избор единиците могат да имат префикс SQL_TSI_
.
Пример
Ето пример за демонстрация:
SELECT TIMESTAMPADD(DAY, 10, '2030-02-01');
Резултат:
+-------------------------------------+ | TIMESTAMPADD(DAY, 10, '2030-02-01') | +-------------------------------------+ | 2030-02-11 | +-------------------------------------+
Стойности за дата и час
Ето пример за предаване на стойност за дата и час:
SELECT TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45');
Резултат:
+-----------------------------------------------+ | TIMESTAMPADD(HOUR, 10, '2030-02-01 10:30:45') | +-----------------------------------------------+ | 2030-02-01 20:30:45 | +-----------------------------------------------+
Добавяне на SQL_TSI_
Префикс
Устройството може да включва SQL_TSI_
префикс, ако е необходимо:
SELECT TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01');
Резултат:
+----------------------------------------------+ | TIMESTAMPADD(SQL_TSI_YEAR, 10, '2030-02-01') | +----------------------------------------------+ | 2040-02-01 | +----------------------------------------------+
Микросекунди
Ето пример, който добавя микросекунди:
SELECT TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45');
Резултат:
+----------------------------------------------------------+ | TIMESTAMPADD(MICROSECOND, 123456, '2030-02-01 10:30:45') | +----------------------------------------------------------+ | 2030-02-01 10:30:45.123456 | +----------------------------------------------------------+
Отрицателни интервали
Отрицателните интервали са валидни:
Пример:
SELECT TIMESTAMPADD(YEAR, -10, '2030-02-01');
Резултат:
+---------------------------------------+ | TIMESTAMPADD(YEAR, -10, '2030-02-01') | +---------------------------------------+ | 2020-02-01 | +---------------------------------------+
Текуща дата
Можем да предадем NOW()
като аргумент datetime, за да използвате текущата дата и час:
SELECT
NOW(),
TIMESTAMPADD(DAY, 10, NOW());
Резултат:
+---------------------+------------------------------+ | NOW() | TIMESTAMPADD(DAY, 10, NOW()) | +---------------------+------------------------------+ | 2021-05-28 09:58:56 | 2021-06-07 09:58:56 | +---------------------+------------------------------+
Липсващ аргумент
Извикване на TIMESTAMPADD()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT TIMESTAMPADD();
Резултат:
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
И още един пример:
SELECT TIMESTAMPADD(10, '2020-12-09');
Резултат:
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