MySQL heeft een PERIOD_DIFF()
functie waarmee u het verschil tussen twee perioden kunt vinden. De punten worden geleverd als twee afzonderlijke argumenten en moeten de indeling JJMM . hebben of JJJJMM .
Syntaxis
De syntaxis gaat als volgt:
PERIOD_DIFF(P1,P2)
Waar P1
is de eerste punt, en P2
is de tweede.
Merk op dat hoewel deze functie datums lijkt te gebruiken, de periodeargumenten eigenlijk geen datumwaarden zijn.
Voorbeeld 1 – Basisgebruik
Hier is een eenvoudig voorbeeld.
SELECT PERIOD_DIFF(199906, 199905);
Resultaat:
+-----------------------------+ | PERIOD_DIFF(199906, 199905) | +-----------------------------+ | 1 | +-----------------------------+
In dit geval is er dus 1 maand verschil tussen de twee perioden.
Voorbeeld 2 – Negatieve resultaten
Dit is wat er gebeurt als we die twee perioden omwisselen.
SELECT PERIOD_DIFF(199905, 199906);
Resultaat:
+-----------------------------+ | PERIOD_DIFF(199905, 199906) | +-----------------------------+ | -1 | +-----------------------------+
Zoals verwacht is het resultaat een negatieve waarde.
Voorbeeld 3 – Tweecijferige jaren
U kunt ook jaren van twee cijfers gebruiken (zodat het formaat JJMM is) ). Hier is een voorbeeld om te demonstreren.
SELECT PERIOD_DIFF(9906, 9905);
Resultaat:
+-------------------------+ | PERIOD_DIFF(9906, 9905) | +-------------------------+ | 1 | +-------------------------+
Voorbeeld 4 – De huidige datum gebruiken
Hier is een voorbeeld dat een van de periode-argumenten afleidt van de huidige datum. Die periode wordt dan vergeleken met een vaste periode.
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';
Resultaat:
+--------------+----------------+-----------------+------------+ | Current Date | Current Period | Previous Period | Difference | +--------------+----------------+-----------------+------------+ | 2018-06-30 | 201806 | 199901 | 233 | +--------------+----------------+-----------------+------------+
Voorbeeld 5 – Een databasevoorbeeld
Hier is een voorbeeld dat het vorige voorbeeld een stap verder brengt en de huidige periode vergelijkt met een periode die is afgeleid van een datum in een database.
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;
Resultaat:
+----------------+---------------------+----------------+------------+ | Current Period | Payment Date | Payment Period | Difference | +----------------+---------------------+----------------+------------+ | 201806 | 2005-05-25 11:30:37 | 200505 | -157 | +----------------+---------------------+----------------+------------+