Mysql
 sql >> база данни >  >> RDS >> Mysql

PERIOD_DIFF() Примери – MySQL

MySQL има PERIOD_DIFF() функция, която ви позволява да намерите разликата между два периода. Периодите се предоставят като два отделни аргумента и трябва да са във формат ГГММ или ГГГГММ .

Синтаксис

Синтаксисът е така:

PERIOD_DIFF(P1,P2)

Където P1 е първият период и P2 е вторият.

Имайте предвид, че въпреки че изглежда, че тази функция използва дати, аргументите на периода всъщност не са стойности за дата.

Пример 1 – Основна употреба

Ето един основен пример.

SELECT PERIOD_DIFF(199906, 199905);

Резултат:

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

Така че в този случай има 1 месец разлика между двата периода.

Пример 2 – Отрицателни резултати

Ето какво се случва, ако разменим тези два периода.

SELECT PERIOD_DIFF(199905, 199906);

Резултат:

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

Както се очаква, резултатът е отрицателна стойност.

Пример 3 – Двуцифрени години

Можете също да използвате двуцифрени години (така че форматът да е ГГММ ). Ето пример за демонстрация.

SELECT PERIOD_DIFF(9906, 9905);

Резултат:

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

Пример 4 – Използване на текущата дата

Ето пример, който извлича един от аргументите за периода от текущата дата. След това този период се сравнява с фиксиран период.

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

Резултат:

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

Пример 5 – Пример за база данни

Ето пример, който отвежда предишния пример една стъпка напред и сравнява текущия период с период, получен от дата в база данни.

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;

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL InnoDB Cluster 8.0 - Пълна разходка за внедряване:Част първа

  2. Какво е новото в ProxySQL 2.0

  3. Как да наблюдавате внедряванията на MySQL с Prometheus &Grafana в ScaleGrid

  4. MySQL условно вмъкване

  5. Изхвърляне на MySQL по заявка