Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PERIOD_DIFF() Przykłady – MySQL

MySQL ma funkcję PERIOD_DIFF() funkcja, która pozwala znaleźć różnicę między dwoma okresami. Kropki są podawane jako dwa oddzielne argumenty i powinny mieć format RRMM lub RRRRMM .

Składnia

Składnia wygląda tak:

PERIOD_DIFF(P1,P2)

Gdzie P1 to pierwsza kropka, a P2 jest drugi.

Zauważ, że chociaż ta funkcja wydaje się używać dat, argumenty okresu nie są w rzeczywistości wartościami dat.

Przykład 1 – Podstawowe użycie

Oto podstawowy przykład.

SELECT PERIOD_DIFF(199906, 199905);

Wynik:

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

Więc w tym przypadku jest 1 miesiąc różnicy między tymi dwoma okresami.

Przykład 2 – Wyniki negatywne

Oto, co się stanie, jeśli zamienimy te dwa okresy.

SELECT PERIOD_DIFF(199905, 199906);

Wynik:

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

Zgodnie z oczekiwaniami wynik jest wartością ujemną.

Przykład 3 – Dwucyfrowe lata

Możesz również użyć dwucyfrowych lat (tak, aby format to RRMM ). Oto przykład do zademonstrowania.

SELECT PERIOD_DIFF(9906, 9905);

Wynik:

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

Przykład 4 – Korzystanie z aktualnej daty

Oto przykład, który wyprowadza jeden z argumentów okresu od bieżącej daty. Ten okres jest następnie porównywany z okresem stałym.

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

Wynik:

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

Przykład 5 – Przykład bazy danych

Oto przykład, który idzie o krok dalej w poprzednim przykładzie i porównuje bieżący okres z okresem uzyskanym na podstawie daty w bazie danych.

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;

Wynik:

+----------------+---------------------+----------------+------------+
| 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. Jak zsynchronizować bazę danych SQLite na telefonie z systemem Android z bazą danych MySQL na serwerze?

  2. JSON_DEPTH() – Znajdź maksymalną głębokość dokumentu JSON w MySQL

  3. Warunek WHERE w MySQL z 16 różnymi przykładami zapytań

  4. Jakiego typu/długości kolumny należy użyć do przechowywania zaszyfrowanego hasła Bcrypt w bazie danych?

  5. Resetowanie hasła ROOT w MySQL 5.6