Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PERIOD_DIFF() Exemplos – MySQL


MySQL tem um PERIOD_DIFF() função que permite encontrar a diferença entre dois períodos. Os pontos são fornecidos como dois argumentos separados e devem estar no formato AAMM ou AAAAMM .


Sintaxe


A sintaxe fica assim:
PERIOD_DIFF(P1,P2)

Onde P1 é o primeiro período e P2 é o segundo.

Observe que, embora essa função pareça usar datas, os argumentos de período não são, na verdade, valores de data.

Exemplo 1 – Uso básico


Aqui está um exemplo básico.
SELECT PERIOD_DIFF(199906, 199905);

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

Portanto, neste caso, há uma diferença de 1 mês entre os dois períodos.

Exemplo 2 - Resultados negativos


Aqui está o que acontece se trocarmos esses dois períodos.
SELECT PERIOD_DIFF(199905, 199906);

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

Como esperado, o resultado é um valor negativo.

Exemplo 3 – Anos de dois dígitos


Você também pode usar anos de dois dígitos (para que o formato seja AAMM ). Aqui está um exemplo para demonstrar.
SELECT PERIOD_DIFF(9906, 9905);

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

Exemplo 4 – Usando a data atual


Aqui está um exemplo que deriva um dos argumentos de período da data atual. Esse período é então comparado a um período fixo.
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';

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

Exemplo 5 – Um exemplo de banco de dados


Aqui está um exemplo que leva o exemplo anterior um passo adiante e compara o período atual com um período derivado de uma data em um banco de dados.
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;

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