Mysql
 sql >> Database >  >> RDS >> Mysql

PERIOD_DIFF() Esempi – MySQL

MySQL ha un PERIOD_DIFF() funzione che permette di trovare la differenza tra due periodi. I periodi sono forniti come due argomenti separati e devono avere il formato AAMM o AAAAMM .

Sintassi

La sintassi è questa:

PERIOD_DIFF(P1,P2)

Dove P1 è il primo punto e P2 è il secondo.

Nota che sebbene questa funzione sembri utilizzare le date, gli argomenti del periodo non sono in realtà valori di data.

Esempio 1 – Utilizzo di base

Ecco un esempio di base.

SELECT PERIOD_DIFF(199906, 199905);

Risultato:

+-----------------------------+
| PERIOD_DIFF(199906, 199905) |
+-----------------------------+
|                           1 |
+-----------------------------+

Quindi in questo caso c'è 1 mese di differenza tra i due periodi.

Esempio 2 – Risultati negativi

Ecco cosa succede se scambiamo questi due periodi.

SELECT PERIOD_DIFF(199905, 199906);

Risultato:

+-----------------------------+
| PERIOD_DIFF(199905, 199906) |
+-----------------------------+
|                          -1 |
+-----------------------------+

Come previsto, il risultato è un valore negativo.

Esempio 3 – Anni a due cifre

Puoi anche utilizzare anni a due cifre (in modo che il formato sia AAMM ). Ecco un esempio da dimostrare.

SELECT PERIOD_DIFF(9906, 9905);

Risultato:

+-------------------------+
| PERIOD_DIFF(9906, 9905) |
+-------------------------+
|                       1 |
+-------------------------+

Esempio 4:utilizzo della data corrente

Ecco un esempio che deriva uno degli argomenti del periodo dalla data corrente. Tale periodo viene quindi confrontato con un periodo fisso.

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';

Risultato:

+--------------+----------------+-----------------+------------+
| Current Date | Current Period | Previous Period | Difference |
+--------------+----------------+-----------------+------------+
| 2018-06-30   |         201806 |          199901 |        233 |
+--------------+----------------+-----------------+------------+

Esempio 5:un esempio di database

Ecco un esempio che porta l'esempio precedente un ulteriore passo avanti e confronta il periodo corrente con un periodo derivato da una data in un 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;

Risultato:

+----------------+---------------------+----------------+------------+
| Current Period | Payment Date        | Payment Period | Difference |
+----------------+---------------------+----------------+------------+
|         201806 | 2005-05-25 11:30:37 |         200505 |       -157 |
+----------------+---------------------+----------------+------------+