Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PERIOD_DIFF() Beispiele – MySQL

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 |
+----------------+---------------------+----------------+------------+