sql >> Base de Datos >  >> RDS >> Mysql

PERIOD_DIFF() Ejemplos – MySQL

MySQL tiene un PERIOD_DIFF() función que le permite encontrar la diferencia entre dos períodos. Los puntos se proporcionan como dos argumentos separados y deben tener el formato YYMM o AAAAMM .

Sintaxis

La sintaxis es así:

PERIOD_DIFF(P1,P2)

Donde P1 es el primer punto, y P2 es el segundo.

Tenga en cuenta que aunque esta función parece usar fechas, los argumentos de período no son en realidad valores de fecha.

Ejemplo 1:uso básico

Este es un ejemplo básico.

SELECT PERIOD_DIFF(199906, 199905);

Resultado:

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

Entonces, en este caso, hay una diferencia de 1 mes entre los dos períodos.

Ejemplo 2:resultados negativos

Esto es lo que sucede si intercambiamos esos dos períodos.

SELECT PERIOD_DIFF(199905, 199906);

Resultado:

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

Como era de esperar, el resultado es un valor negativo.

Ejemplo 3:años de dos dígitos

También puede usar años de dos dígitos (para que el formato sea YYMM ). Aquí hay un ejemplo para demostrarlo.

SELECT PERIOD_DIFF(9906, 9905);

Resultado:

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

Ejemplo 4:uso de la fecha actual

Aquí hay un ejemplo que deriva uno de los argumentos de período de la fecha actual. Ese período luego se compara con un período fijo.

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

Ejemplo 5:un ejemplo de base de datos

Aquí hay un ejemplo que lleva el ejemplo anterior un paso más allá y compara el período actual con un período derivado de una fecha en una base de datos.

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