sql >> Database >  >> RDS >> Mysql

PERIOD_DIFF() Voorbeelden – MySQL

MySQL heeft een PERIOD_DIFF() functie waarmee u het verschil tussen twee perioden kunt vinden. De punten worden geleverd als twee afzonderlijke argumenten en moeten de indeling JJMM . hebben of JJJJMM .

Syntaxis

De syntaxis gaat als volgt:

PERIOD_DIFF(P1,P2)

Waar P1 is de eerste punt, en P2 is de tweede.

Merk op dat hoewel deze functie datums lijkt te gebruiken, de periodeargumenten eigenlijk geen datumwaarden zijn.

Voorbeeld 1 – Basisgebruik

Hier is een eenvoudig voorbeeld.

SELECT PERIOD_DIFF(199906, 199905);

Resultaat:

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

In dit geval is er dus 1 maand verschil tussen de twee perioden.

Voorbeeld 2 – Negatieve resultaten

Dit is wat er gebeurt als we die twee perioden omwisselen.

SELECT PERIOD_DIFF(199905, 199906);

Resultaat:

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

Zoals verwacht is het resultaat een negatieve waarde.

Voorbeeld 3 – Tweecijferige jaren

U kunt ook jaren van twee cijfers gebruiken (zodat het formaat JJMM is) ). Hier is een voorbeeld om te demonstreren.

SELECT PERIOD_DIFF(9906, 9905);

Resultaat:

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

Voorbeeld 4 – De huidige datum gebruiken

Hier is een voorbeeld dat een van de periode-argumenten afleidt van de huidige datum. Die periode wordt dan vergeleken met een vaste periode.

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

Resultaat:

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

Voorbeeld 5 – Een databasevoorbeeld

Hier is een voorbeeld dat het vorige voorbeeld een stap verder brengt en de huidige periode vergelijkt met een periode die is afgeleid van een datum in een database.

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;

Resultaat:

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

  1. Hoe epoch naar mySQL-tijdstempel in JAVA te converteren

  2. Hoe beperk ik het aantal rijen dat wordt geretourneerd door een Oracle-query na het bestellen?

  3. Welk gegevenstype voor breedte- en lengtegraad?

  4. hoe vind je indexen op een tabel in orakel