Mysql
 sql >> Base de données >  >> RDS >> Mysql

PERIOD_DIFF() Exemples – MySQL

MySQL a un PERIOD_DIFF() fonction qui permet de trouver la différence entre deux périodes. Les points sont fournis sous la forme de deux arguments distincts et doivent être au format AAMM ou AAAAMM .

Syntaxe

La syntaxe ressemble à ceci :

PERIOD_DIFF(P1,P2)

P1 est la première période, et P2 est le deuxième.

Notez que bien que cette fonction semble utiliser des dates, les arguments de période ne sont pas réellement des valeurs de date.

Exemple 1 - Utilisation de base

Voici un exemple de base.

SELECT PERIOD_DIFF(199906, 199905);

Résultat :

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

Donc dans ce cas, il y a 1 mois d'écart entre les deux périodes.

Exemple 2 – Résultats négatifs

Voici ce qui se passe si nous échangeons ces deux périodes.

SELECT PERIOD_DIFF(199905, 199906);

Résultat :

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

Comme prévu, le résultat est une valeur négative.

Exemple 3 – Années à deux chiffres

Vous pouvez également utiliser des années à deux chiffres (pour que le format soit AAMM ). Voici un exemple pour illustrer.

SELECT PERIOD_DIFF(9906, 9905);

Résultat :

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

Exemple 4 - Utilisation de la date actuelle

Voici un exemple qui dérive l'un des arguments de la période à partir de la date actuelle. Cette période est ensuite comparée à une période fixe.

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

Résultat :

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

Exemple 5 - Un exemple de base de données

Voici un exemple qui pousse l'exemple précédent un peu plus loin et compare la période actuelle avec une période dérivée d'une date dans une base de données.

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;

Résultat :

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