sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona PERIOD_DIFF() en MariaDB

En MariaDB, PERIOD_DIFF() es una función de fecha y hora integrada que devuelve el número de meses entre dos períodos.

Sintaxis

La sintaxis es así:

PERIOD_DIFF(P1,P2)

Donde P1 y P2 son los períodos para obtener la diferencia entre ellos.

Ambos argumentos tienen el formato AAAA o AAAAMM. No son valores de fecha.

Ejemplo

He aquí un ejemplo:

SELECT PERIOD_DIFF(202108, 202101);

Resultado:

+-----------------------------+
| PERIOD_DIFF(202108, 202101) |
+-----------------------------+
|                           7 |
+-----------------------------+

En este ejemplo, hay una diferencia de siete meses entre los dos períodos.

Cambiar el orden

Si el primer período es anterior al segundo, el resultado es un valor negativo.

Esto es lo que sucede cuando cambio el orden de los argumentos en el ejemplo anterior:

SELECT PERIOD_DIFF(202101, 202108);

Resultado:

+-----------------------------+
| PERIOD_DIFF(202101, 202108) |
+-----------------------------+
|                          -7 |
+-----------------------------+

Años de dos dígitos

Si alguno de los argumentos contiene un año de dos dígitos, los valores del 00 al 69 se convierten del 2000 al 2069, mientras que los valores del 70 se convierten del 1970 en adelante.

Ejemplo:

SELECT 
    PERIOD_DIFF(6911, 6912),
    PERIOD_DIFF(6911, 7001);

Resultado:

+-------------------------+-------------------------+
| PERIOD_DIFF(6911, 6912) | PERIOD_DIFF(6911, 7001) |
+-------------------------+-------------------------+
|                      -1 |                    1198 |
+-------------------------+-------------------------+

Argumento faltante

Llamando a PERIOD_DIFF() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

SELECT PERIOD_DIFF();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'PERIOD_DIFF'

Y otro ejemplo:

SELECT PERIOD_DIFF( 6912 );

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'PERIOD_DIFF'