sql >> Databasteknik >  >> RDS >> Mysql

PERIOD_DIFF() Exempel – MySQL

MySQL har en PERIOD_DIFF() funktion som gör att du kan hitta skillnaden mellan två perioder. Perioderna tillhandahålls som två separata argument och de ska ha formatet ÅÅMM eller ÅÅÅÅMM .

Syntax

Syntaxen ser ut så här:

PERIOD_DIFF(P1,P2)

Där P1 är den första perioden och P2 är den andra.

Observera att även om den här funktionen verkar använda datum, är periodargumenten faktiskt inte datumvärden.

Exempel 1 – Grundläggande användning

Här är ett grundläggande exempel.

SELECT PERIOD_DIFF(199906, 199905);

Resultat:

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

Så i det här fallet är det 1 månads skillnad mellan de två perioderna.

Exempel 2 – Negativa resultat

Det här är vad som händer om vi byter om de två perioderna.

SELECT PERIOD_DIFF(199905, 199906);

Resultat:

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

Som väntat är resultatet ett negativt värde.

Exempel 3 – Tvåsiffriga år

Du kan också använda tvåsiffriga årtal (så att formatet är ÅÅMM). ). Här är ett exempel att visa.

SELECT PERIOD_DIFF(9906, 9905);

Resultat:

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

Exempel 4 – Använda det aktuella datumet

Här är ett exempel som härleder ett av periodargumenten från det aktuella datumet. Den perioden jämförs sedan med en fast period.

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 |
+--------------+----------------+-----------------+------------+

Exempel 5 – Ett databasexempel

Här är ett exempel som tar det föregående exemplet ett steg längre och jämför den aktuella perioden med en period som härleds från ett datum i en databas.

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. Fix Åtkomst nekad för användaren 'root'@'localhost' för phpMyAdmin

  2. Hur man hittar dubbletter av poster i MySQL

  3. SQL Server Ändra TempDB-filplats

  4. Finns det en .NET motsvarande SQL Servers newsequentialid()