MySQL má PERIOD_ADD()
funkce, která umožňuje přidat k danému období počet měsíců. Vrátí hodnotu ve formátu RRRRMM .
Tento článek obsahuje příklady, které demonstrují, jak to funguje.
Syntaxe
Syntaxe vypadá takto:
PERIOD_ADD(P,N)
Kde P
je tečka a N
je počet měsíců, které se mají přidat.
Všimněte si, že ačkoli se zdá, že tato funkce přidává k datu měsíce, argument období ve skutečnosti není hodnotou data.
Příklad 1 – Základní použití
Zde je základní příklad.
SELECT PERIOD_ADD(202101;2);
Výsledek:
+----------------------+| PERIOD_ADD(202101,2) |+----------------------+| 202103 |+----------------------+
Takže v tomto případě jsme k období přidali dva měsíce.
Příklad 2 – Záporné hodnoty
Zde je příklad, který přidává záporný počet měsíců.
SELECT PERIOD_ADD(202101,-2);
Výsledek:
+-----------------------+| PERIOD_ADD(202101,-2) |+-----------------------+| 202011 |+-----------------------+
Příklad 3 – roky se dvěma číslicemi
Tento příklad používá dvoumístnou komponentu roku.
SELECT PERIOD_ADD(2101;2);
Výsledek:
+---------------------+| PERIOD_ADD(2101,2) |+--------------------+| 202103 |+--------------------+
Všimnete si, že výsledek stále používá čtyřmístný rok (i když jsme argument období uvedli jako dvoumístný rok).
Příklad 4 – Použití aktuálního data
Tento příklad odvozuje období od aktuálního data. Poté k tomuto období přidá další měsíc.
VYBERTE CURDATE( ) JAKO 'Aktuální datum', EXTRACT (YEAR_MONTH OD CURDATE( )) JAKO 'Aktuální období', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM CURDATE( )), 1) JAKO 'Další období';
Výsledek:
+--------------+----------------+-------------+ | Aktuální datum | Aktuální období | Další období |+--------------+----------------+-------------+ | 2018-06-30 | 201806 | 201807 |+--------------+----------------+-------------+Příklad 5 – Příklad databáze
Zde je příklad dotazování databáze.
POUŽÍVEJTE sakila;VYBERTE datum platby JAKO 'Datum platby', EXTRACT (YEAR_MONTH OD payment_date) JAKO 'Platební období', PERIOD_ADD(EXTRACT (YEAR_MONTH OD payment_date), 12) JAKO 'Další platba'OD platbyWHERE payment_id =1;Výsledek:
+---------------------+----------------+------- -------+| Datum platby | Platební období | Další platba |+---------------------+----------------+------- -------+| 2005-05-25 11:30:37 | 200505 | 200605 |+---------------------+----------------+--------- ------+