MariaDB предоставя няколко начина за извършване на аритметика на дати. Това включва добавяне или изваждане на месец (или много месеци) от дадена дата.
Ето 6 начина да добавите месец към дата в MariaDB.
Бонус актуализация :Сега добавих 7-ми начин за добавяне на месец към дата в края на тази статия. Така че предполагам, че сега има 7 начина да добавите месец към дата в MariaDB 🙂
DATE_ADD()
Функция
DATE_ADD()
функцията ви позволява да добавите сума към дата. Например можете да добавите няколко дни, седмици, месеци, години и т.н.
Пример:
SELECT DATE_ADD('2021-05-01', INTERVAL 1 MONTH);
Резултат:
+------------------------------------+| DATE_ADD('2021-05-01', ИНТЕРВАЛ 1 МЕСЕЦ) |+---------------------------------- --------+| 2021-06-01 |+--------------------------------------------------+
Ако трябва да добавите повече от един месец, просто използвайте това число вместо 1
. Въпреки това, MONTH
ключовата дума остава не в множествено число, независимо:
SELECT DATE_ADD('2021-05-01', INTERVAL 2 MONTH);
Резултат:
+------------------------------------+| DATE_ADD('2021-05-01', ИНТЕРВАЛ 2 МЕСЕЦА) |+---------------------------------- --------+| 2021-07-01 |+--------------------------------------------------+
Възможно е също да използвате друга единица за дата/час с подходящия номер на тази единица. Следователно можете да посочите определен брой дни, като 30 или 31.
Пример:
SELECT DATE_ADD('2021-05-01', INTERVAL 31 DAY);
Резултат:
+-----------------------------------+| DATE_ADD('2021-05-01', ИНТЕРВАЛ 31 ДЕН) |+---------------------------------- -------+| 2021-06-01 |+-------------------------------------------------+предварително>Когато използвате дни, дали ще се окаже точно месец или не, ще зависи от въпросния месец. В горния пример можех да предвидя 30 дни, но това би ни запазило в рамките на същия месец:
SELECT DATE_ADD('2021-05-01', INTERVAL 30 DAY);
Резултат:
+-----------------------------------+| DATE_ADD('2021-05-01', ИНТЕРВАЛ 30 ДЕН) |+---------------------------------- -------+| 31.05.2021 |+-------------------------------------------------+предварително>Така че, ако всъщност искате да добавите месец, тогава
MONTH
единица е много по-лесно, отколкото да се опитвате да определите колко дни да добавите.
ADDDATE()
ФункцияДруг начин да добавите месец към дата е да използвате
ADDDATE()
функция. Тази функция има два синтаксиса. Един синтаксис ви позволява да добавите няколко дни към дата. Другият синтаксис е същият като приDATE_ADD()
функция по-горе. Когато използвате този синтаксис,ADDDATE()
е синоним наDATE_ADD()
.Пример:
SELECT ADDDATE('2021-05-01', INTERVAL 1 MONTH);
Резултат:
+-----------------------------------+| ADDDATE('2021-05-01', ИНТЕРВАЛ 1 МЕСЕЦ) |+---------------------------------- -------+| 2021-06-01 |+-------------------------------------------------+предварително>
DATE_SUB()
Функция
DATE_SUB()
функцията ви позволява да изваждате сума към дата. Ако обаче предоставите отрицателна стойност за изваждане, тя накрая се добавя до датата.Пример:
SELECT DATE_SUB('2021-05-01', INTERVAL -1 MONTH);
Резултат:
+------------------------------------+| DATE_SUB('2021-05-01', ИНТЕРВАЛ -1 МЕСЕЦ) |+-------------------------------- ----------+| 2021-06-01 |+--------------------------------------------------- +
SUBDATE()
Функция
SUBDATE()
функцията е синоним наDATE_SUB()
когато използвате следния синтаксис.Пример:
SELECT SUBDATE('2021-05-01', INTERVAL -1 MONTH);
Резултат:
+------------------------------------+| SUBDATE('2021-05-01', ИНТЕРВАЛ -1 МЕСЕЦ) |+-------------------------------- ---------+| 2021-06-01 |+--------------------------------------------------+
+
ОператорДруга възможност е да използвате
+
оператор.
+
Операторът се използва за извършване на добавяне и можем да го използваме за дати, заедно с приложимата единица дата/час, за да добавим определен брой месеци към нашата дата.Пример:
SELECT '2021-05-01' + INTERVAL 1 MONTH;
Резултат:
+--------------------------------+| '2021-05-01' + ИНТЕРВАЛ 1 МЕСЕЦ |+--------------------------------+| 01.06.2021 |+--------------------------------+
-
Оператор
-
Операторът може да се използва за изваждане на сума от дата. Но ако се използва за изваждане на отрицателно число, резултатът е положителна сума, добавена към датата:SELECT '2021-05-01' - INTERVAL -1 MONTH;
Резултат:
+---------------------------------+| '2021-05-01' - ИНТЕРВАЛ -1 МЕСЕЦ |+----------------------------------+| 01.06.2021 |+---------------------------------+Бонус:
ADD_MONTHS()
ФункцияОткакто за първи път написах тази статия, в MariaDB беше въведена нова функция специално за добавяне на месеци към дата.
Функцията се нарича
ADD_MONTHS()
, и беше въведен в MariaDB 10.6.1, за да подобри съвместимостта с Oracle.Така че предполагам, че тази статия трябва да се нарича 7 начина да добавите месец към дата... 🙂
Пример:
SELECT ADD_MONTHS('2020-01-01', 3);
Резултат:
+----------------------------+| ADD_MONTHS('2020-01-01', 3) |+----------------------------+| 2020-04-01 |+----------------------------+Други единици за дата и час
Горните примери добавят няколко месеца към датата, но можем да използваме същите техники, за да добавим всяка единица дата/час. Вижте Мерките за дата и час в MariaDB за пълен списък с единици за дата/час, които могат да се използват с горните функции и оператор.