MySQL a un PERIOD_ADD()
fonction qui permet d'ajouter un nombre de mois à une période donnée. Il renvoie une valeur au format AAAAMM .
Cet article fournit des exemples pour montrer comment cela fonctionne.
Syntaxe
La syntaxe ressemble à ceci :
PERIOD_ADD(P,N)
Où P
est le point, et N
est le nombre de mois à ajouter.
Notez que, bien que cette fonction semble ajouter des mois à une date, l'argument période n'est pas réellement une valeur de date.
Exemple 1 - Utilisation de base
Voici un exemple de base.
SELECT PERIOD_ADD(202101,2);
Résultat :
+----------------------+| PERIOD_ADD(202101,2) |+----------------------+| 202103 |+----------------------+
Donc dans ce cas, nous avons ajouté deux mois à la période.
Exemple 2 – Valeurs négatives
Voici un exemple qui ajoute un nombre négatif de mois.
SELECT PERIOD_ADD(202101,-2);
Résultat :
+-----------------------+| PERIOD_ADD(202101,-2) |+-----------------------+| 202011 |+----------------------+
Exemple 3 – Années à deux chiffres
Cet exemple utilise un composant d'année à deux chiffres.
SELECT PERIOD_ADD(2101,2);
Résultat :
+--------------------+| PERIOD_ADD(2101,2) |+--------------------+| 202103 |+--------------------+
Vous remarquerez que le résultat utilise toujours une année à quatre chiffres (même si nous avons fourni l'argument de période comme une année à deux chiffres).
Exemple 4 - Utilisation de la date actuelle
Cet exemple dérive la période de la date actuelle. Il ajoute ensuite un mois à cette période.
SELECT CURDATE( ) AS 'Date actuelle', EXTRACT(YEAR_MONTH FROM CURDATE( )) AS 'Période actuelle', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM CURDATE( )), 1) AS 'Période suivante' ;
Résultat :
+-------------+-----------+-------------+ | Date actuelle | Période actuelle | Période suivante |+--------------+-----------+-------------+ | 2018-06-30 | 201806 | 201807 |+-------------+----------------+-------------+Exemple 5 - Un exemple de base de données
Voici un exemple qui interroge une base de données.
USE sakila;SELECT payment_date AS 'Payment Date', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Payment Period', PERIOD_ADD(EXTRACT(YEAR_MONTH FROM payment_date), 12) AS 'Next Payment'FROM paymentWHERE payment_id =1;Résultat :
+---------------------+----------------+------- -------+| Date de paiement | Période de paiement | Prochain paiement |+---------------------+----------------+------- -------+| 2005-05-25 11:30:37 | 200505 | 200605 |+---------------------+----------------+-------- ------+