sql >> Databáze >  >> RDS >> Mysql

PERIOD_DIFF() Příklady – MySQL

MySQL má PERIOD_DIFF() funkce, která vám umožní najít rozdíl mezi dvěma obdobími. Tečky jsou poskytovány jako dva samostatné argumenty a měly by mít formát RRMM nebo RRRRMM .

Syntaxe

Syntaxe vypadá takto:

PERIOD_DIFF(P1,P2)

Kde P1 je první tečka a P2 je druhý.

Všimněte si, že ačkoli se zdá, že tato funkce používá data, argumenty období ve skutečnosti nejsou hodnoty data.

Příklad 1 – Základní použití

Zde je základní příklad.

SELECT PERIOD_DIFF(199906, 199905);

Výsledek:

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

V tomto případě je tedy mezi těmito dvěma obdobími měsíční rozdíl.

Příklad 2 – Negativní výsledky

Zde je to, co se stane, když tato dvě období prohodíme.

SELECT PERIOD_DIFF(199905, 199906);

Výsledek:

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

Podle očekávání je výsledkem záporná hodnota.

Příklad 3 – roky se dvěma číslicemi

Můžete také použít dvě číslice roku (takže formát je RRMM ). Zde je příklad k demonstraci.

SELECT PERIOD_DIFF(9906, 9905);

Výsledek:

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

Příklad 4 – Použití aktuálního data

Zde je příklad, který odvozuje jeden z argumentů období z aktuálního data. Toto období se poté porovná s pevným obdobím.

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

Výsledek:

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

Příklad 5 – Příklad databáze

Zde je příklad, který posouvá předchozí příklad o krok dále a porovnává aktuální období s obdobím odvozeným z data v databázi.

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;

Výsledek:

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

  1. Monitoring Galera Cluster pro MySQL nebo MariaDB – porozumění metrikám (aktualizováno)

  2. Oracle Database 21c

  3. SQL Server Database Backup Encryption

  4. Může %NOTFOUND po načtení vrátit hodnotu null?