MySQL má PERIOD_DIFF()
funkce, která vám umožní najít rozdíl mezi dvěma obdobími. Tečky jsou poskytovány jako dva samostatné argumenty a měly by mít formát RRMM nebo RRRRMM .
Syntaxe
Syntaxe vypadá takto:
PERIOD_DIFF(P1,P2)
Kde P1
je první tečka a P2
je druhý.
Všimněte si, že ačkoli se zdá, že tato funkce používá data, argumenty období ve skutečnosti nejsou hodnoty data.
Příklad 1 – Základní použití
Zde je základní příklad.
SELECT PERIOD_DIFF(199906, 199905);
Výsledek:
+-----------------------------+ | PERIOD_DIFF(199906, 199905) | +-----------------------------+ | 1 | +-----------------------------+
V tomto případě je tedy mezi těmito dvěma obdobími měsíční rozdíl.
Příklad 2 – Negativní výsledky
Zde je to, co se stane, když tato dvě období prohodíme.
SELECT PERIOD_DIFF(199905, 199906);
Výsledek:
+-----------------------------+ | PERIOD_DIFF(199905, 199906) | +-----------------------------+ | -1 | +-----------------------------+
Podle očekávání je výsledkem záporná hodnota.
Příklad 3 – roky se dvěma číslicemi
Můžete také použít dvě číslice roku (takže formát je RRMM ). Zde je příklad k demonstraci.
SELECT PERIOD_DIFF(9906, 9905);
Výsledek:
+-------------------------+ | PERIOD_DIFF(9906, 9905) | +-------------------------+ | 1 | +-------------------------+
Příklad 4 – Použití aktuálního data
Zde je příklad, který odvozuje jeden z argumentů období z aktuálního data. Toto období se poté porovná s pevným obdobím.
SELECT CURDATE( ) AS 'Current Date', EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Current Period', 199901 AS 'Previous Period', PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM CURDATE( )), 199901) AS 'Difference';
Výsledek:
+--------------+----------------+-----------------+------------+ | Current Date | Current Period | Previous Period | Difference | +--------------+----------------+-----------------+------------+ | 2018-06-30 | 201806 | 199901 | 233 | +--------------+----------------+-----------------+------------+
Příklad 5 – Příklad databáze
Zde je příklad, který posouvá předchozí příklad o krok dále a porovnává aktuální období s obdobím odvozeným z data v databázi.
USE sakila; SELECT EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Current Period', payment_date AS 'Payment Date', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Payment Period', PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM payment_date), EXTRACT(YEAR_MONTH FROM CURDATE( ))) AS 'Difference' FROM payment WHERE payment_id = 1;
Výsledek:
+----------------+---------------------+----------------+------------+ | Current Period | Payment Date | Payment Period | Difference | +----------------+---------------------+----------------+------------+ | 201806 | 2005-05-25 11:30:37 | 200505 | -157 | +----------------+---------------------+----------------+------------+