MySQL hat einen PERIOD_DIFF()
Funktion, mit der Sie die Differenz zwischen zwei Perioden ermitteln können. Die Punkte werden als zwei separate Argumente bereitgestellt und sollten das Format YYMM haben oder JJJJMM .
Syntax
Die Syntax sieht so aus:
PERIOD_DIFF(P1,P2)
Wobei P1
der erste Punkt ist, und P2
ist die zweite.
Beachten Sie, dass, obwohl diese Funktion Datumsangaben zu verwenden scheint, die Punktargumente eigentlich keine Datumswerte sind.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein einfaches Beispiel.
SELECT PERIOD_DIFF(199906, 199905);
Ergebnis:
+-----------------------------+ | PERIOD_DIFF(199906, 199905) | +-----------------------------+ | 1 | +-----------------------------+
In diesem Fall gibt es also einen Unterschied von 1 Monat zwischen den beiden Perioden.
Beispiel 2 – Negative Ergebnisse
Folgendes passiert, wenn wir diese beiden Punkte vertauschen.
SELECT PERIOD_DIFF(199905, 199906);
Ergebnis:
+-----------------------------+ | PERIOD_DIFF(199905, 199906) | +-----------------------------+ | -1 | +-----------------------------+
Wie erwartet ist das Ergebnis ein negativer Wert.
Beispiel 3 – Zweistellige Jahreszahl
Sie können auch zweistellige Jahreszahlen verwenden (sodass das Format JJMM ist ). Hier ist ein Beispiel zur Veranschaulichung.
SELECT PERIOD_DIFF(9906, 9905);
Ergebnis:
+-------------------------+ | PERIOD_DIFF(9906, 9905) | +-------------------------+ | 1 | +-------------------------+
Beispiel 4 – Verwendung des aktuellen Datums
Hier ist ein Beispiel, das eines der Zeitraumargumente vom aktuellen Datum ableitet. Dieser Zeitraum wird dann mit einem festen Zeitraum verglichen.
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';
Ergebnis:
+--------------+----------------+-----------------+------------+ | Current Date | Current Period | Previous Period | Difference | +--------------+----------------+-----------------+------------+ | 2018-06-30 | 201806 | 199901 | 233 | +--------------+----------------+-----------------+------------+
Beispiel 5 – Ein Datenbankbeispiel
Hier ist ein Beispiel, das das vorherige Beispiel noch einen Schritt weiterführt und den aktuellen Zeitraum mit einem Zeitraum vergleicht, der aus einem Datum in einer Datenbank abgeleitet wurde.
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;
Ergebnis:
+----------------+---------------------+----------------+------------+ | Current Period | Payment Date | Payment Period | Difference | +----------------+---------------------+----------------+------------+ | 201806 | 2005-05-25 11:30:37 | 200505 | -157 | +----------------+---------------------+----------------+------------+