В MariaDB, ADDDATE()
е вградена функция за дата и час, която извършва аритметика за дата.
Позволява ви да промените дата, като посочите датата, единицата за добавяне и сумата за добавяне. Можете да подадете отрицателна сума, ако трябва да извадите датата с определен интервал.
ADDDATE()
също има синтаксис за пряк път, който ви позволява да добавите определен брой дни към датата.
Синтаксис
ADDDATE()
функцията има два синтаксиса.
Синтаксис 1:
ADDDATE(expr,days)
Където expr
е датата и days
е броят на дните за добавяне.
Синтаксис 2:
ADDDATE(date,INTERVAL expr unit)
Където date
е датата за промяна, expr
е сумата за добавяне и unit
е единицата за добавяне (напр. секунда, минута и т.н.).
Когато използвате този синтаксис, ADDDATE()
е синоним на DATE_ADD()
.
Пример – Синтаксис 1
Ето пример за използване на първия синтаксис:
SELECT ADDDATE('2021-05-01', 1);
Резултат:
+-------------------------+| ADDDATE('2021-05-01', 1) |+--------------------------+| 2021-05-02 |+------------------------------+
Можем също да включим частта от време, ако е необходимо:
SELECT ADDDATE('2021-05-01 10:00:00', 1);
Резултат:
+---------------------------------+| ADDDATE('2021-05-01 10:00:00', 1) |+------------------------------ ----+| 2021-05-02 10:00:00 |+---------------------------------------+предварително>Ето два алтернативни начина да направите едно и също нещо:
SELECT DATE_ADD('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1", '2021-05-01 10:00:00' + INTERVAL 1 DAY AS "Result 2";
Резултат:
+---------------------+---------------------+| Резултат 1 | Резултат 2 |+---------------------+---------------------+| 2021-05-02 10:00:00 | 2021-05-02 10:00:00 |+---------------------+---------------- -----+Пример – Синтаксис 2
Ето пример за използване на втория синтаксис:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
Резултат:
+------------------------------------------------------- ---+| ADDDATE('2021-05-31 10:00:00', ИНТЕРВАЛ 1 ЧАС) |+---------------------------- --------------------+| 2021-05-31 11:00:00 |+---------------------------------------------- -----------+Този синтаксис ни позволява да добавяме други единици към датата (т.е. не само дните). Тук добавих час към датата, но също толкова лесно можех да добавя минути, секунди, месеци, дни, години и т.н. Продължете да четете за примери.
Ето два алтернативни метода за постигане на същия резултат като горния пример:
SELECT DATE_ADD('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1", '2021-05-31 10:00:00' + INTERVAL 1 HOUR AS "Result 2";
Резултат:
+---------------------+---------------------+| Резултат 1 | Резултат 2 |+---------------------+---------------------+| 31.05.2021 11:00:00 | 31.05.2021 11:00:00 |+---------------------+---------------- -----+Отрицателни интервали
Предоставянето на отрицателен интервал изважда тази сума от датата.
Пример:
SELECT ADDDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
Резултат:
+------------------------------------------------------- ----+| ADDDATE('2021-05-31 10:00:00', ИНТЕРВАЛ -1 ЧАС) |+---------------------------- ---------------------+| 2021-05-31 09:00:00 |+---------------------------------------------- ------------+Други единици
Ето пример, който добавя интервал от 1 към различните единици за дата и час:
SELECT ADDDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND, ADDDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
Резултат (с помощта на вертикален изход):
ГОДИНА:2022-05-01 10:00:00 МЕСЕЦ:2021-06-01 10:00:00 ДЕН:2021-05-02 10:00:00 ЧАС:2021-05-01 11:00:00 МИНУТА:2021-05-01 10:01:00 ВТОРА:2021-05-01 10:00:01 МИКРОСЕКУНДА:2021-05-01 10:00:00.000001Съставни единици
Ето пример, който използва съставни единици:
SELECT ADDDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH", ADDDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND", ADDDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Резултат:
+---------------------+---------------------+-- -------------------+| YEAR_MONTH | HOUR_SECOND | DAY_MINUTE |+---------------------+---------------------+--- ------------------+| 01.07.2022 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |+---------------------+---------------- -----+---------------------+Нулеви дати
Предаването на
null
за датата връщаnull
:SELECT ADDDATE(null, INTERVAL 1 YEAR);
Резултат:
+--------------------------------+| ДОБАВЯНЕ(нула, ИНТЕРВАЛ 1 ГОДИНА) |+--------------------------------+| NULL |+--------------------------------+Липсващ аргумент
Извикване на
ADDDATE()
с грешен брой аргументи или без подаване на аргументи води до грешка:SELECT ADDDATE();
Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1