MySQL има PERIOD_ADD()
функция, която ви позволява да добавите няколко месеца към даден период. Връща стойност във формат ГГГГММ .
Тази статия предоставя примери, които демонстрират как работи.
Синтаксис
Синтаксисът е така:
PERIOD_ADD(P,N)
Където P
е точката и N
е броят на месеците за добавяне.
Имайте предвид, че въпреки че изглежда, че тази функция добавя месеци към дата, аргументът период всъщност не е стойност за дата.
Пример 1 – Основна употреба
Ето един основен пример.
ИЗБЕРЕТЕ PERIOD_ADD(202101,2);
Резултат:
+---------------------+| PERIOD_ADD(202101,2) |+---------------------+| 202103 |+---------------------+
Така че в този случай добавихме два месеца към периода.
Пример 2 – Отрицателни стойности
Ето пример, който добавя отрицателен брой месеци.
ИЗБЕРЕТЕ PERIOD_ADD(202101,-2);
Резултат:
<пред>+-----------------------+| PERIOD_ADD(202101,-2) |+-----------------------+| 202011 |+-----------------------+Пример 3 – Двуцифрени години
Този пример използва двуцифрен компонент на годината.
ИЗБЕРЕТЕ PERIOD_ADD(2101,2);
Резултат:
+-------------------+| PERIOD_ADD(2101,2) |+-------------------+| 202103 |+-------------------+
Ще забележите, че резултатът все още използва четирицифрена година (въпреки че предоставихме аргумента за периода като двуцифрена година).
Пример 4 – Използване на текущата дата
Този пример извлича периода от текущата дата. След това добавя месец към този период.
ИЗБЕРЕТЕ CURDATE( ) КАТО 'Текуща дата', EXTRACT(YEAR_MONTH ОТ CURDATE( )) КАТО 'Текущ период', PERIOD_ADD(EXTRACT(YEAR_MONTH ОТ CURDATE( )), 1) КАТО 'Следващ период';
Резултат:
+--------------+----------------+-----------+ | Текуща дата | Текущ период | Следващ период |+--------------+----------------+------------+ | 30.06.2018 | 201806 | 201807 |+--------------+----------------+------------+предварително>Пример 5 – Пример за база данни
Ето пример, който прави заявки към база данни.
ИЗПОЛЗВАЙТЕ sakila;ИЗБЕРЕТЕ pay_date КАТО 'Дата на плащане', EXTRACT(YEAR_MONTH FROM payment_date) КАТО 'Период на плащане', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM payment_date), 12) КАТО 'Следващо плащане'FROM =paymentWHERE1;Резултат:
+---------------------+----------------+------- -------+| Дата на плащане | Период на плащане | Следващо плащане |+---------------------+----------------+------- -------+| 25.05.2005 11:30:37 | 200505 | 200605 |+---------------------+----------------+-------- ------+