sql >> Database teknologi >  >> RDS >> Mysql

PERIOD_DIFF() Eksempler – MySQL

MySQL har en PERIOD_DIFF() funktion, der giver dig mulighed for at finde forskellen mellem to perioder. Perioderne er angivet som to separate argumenter, og de skal have formatet ÅÅMM eller ÅÅÅÅMM .

Syntaks

Syntaksen ser sådan ud:

PERIOD_DIFF(P1,P2)

Hvor P1 er den første periode, og P2 er den anden.

Bemærk, at selvom denne funktion ser ud til at bruge datoer, er periodeargumenterne faktisk ikke datoværdier.

Eksempel 1 – Grundlæggende brug

Her er et grundlæggende eksempel.

SELECT PERIOD_DIFF(199906, 199905);

Resultat:

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

Så i dette tilfælde er der 1 måneds forskel mellem de to perioder.

Eksempel 2 – Negative resultater

Her er, hvad der sker, hvis vi bytter om på de to perioder.

SELECT PERIOD_DIFF(199905, 199906);

Resultat:

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

Som forventet er resultatet en negativ værdi.

Eksempel 3 – To cifrede år

Du kan også bruge tocifrede årstal (så formatet er ÅÅMM). ). Her er et eksempel til at demonstrere.

SELECT PERIOD_DIFF(9906, 9905);

Resultat:

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

Eksempel 4 – Brug af den aktuelle dato

Her er et eksempel, der udleder et af periodeargumenterne fra den aktuelle dato. Den periode sammenlignes så med en fast 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';

Resultat:

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

Eksempel 5 – Et databaseeksempel

Her er et eksempel, der tager det forrige eksempel et skridt videre og sammenligner den aktuelle periode med en periode afledt af en dato i en 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;

Resultat:

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

  1. postgres - hvor i (liste) - kolonne eksisterer ikke

  2. Gem SQLite-forespørgselsresultater i en tekstfil

  3. Trævisningskontrol Afkrydsningsmærke Tilføj Slet noder

  4. Tilknytning af en fremmednøgle med et brugerdefineret kolonnenavn