Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ví dụ về PERIOD_DIFF () - MySQL

MySQL có PERIOD_DIFF() chức năng cho phép bạn tìm sự khác biệt giữa hai khoảng thời gian. Các dấu chấm được cung cấp dưới dạng hai đối số riêng biệt và chúng phải ở định dạng YYMM hoặc YYYYMM .

Cú pháp

Cú pháp như sau:

PERIOD_DIFF(P1,P2)

Ở đâu P1 là khoảng thời gian đầu tiên và P2 là thứ hai.

Lưu ý rằng mặc dù hàm này dường như sử dụng ngày tháng, nhưng các đối số dấu chấm không phải là giá trị ngày tháng.

Ví dụ 1 - Cách sử dụng cơ bản

Đây là một ví dụ cơ bản.

SELECT PERIOD_DIFF(199906, 199905);

Kết quả:

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

Vì vậy, trong trường hợp này, có 1 tháng chênh lệch giữa hai giai đoạn.

Ví dụ 2 - Kết quả phủ định

Đây là những gì sẽ xảy ra nếu chúng ta hoán đổi hai khoảng thời gian đó.

SELECT PERIOD_DIFF(199905, 199906);

Kết quả:

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

Như mong đợi, kết quả là một giá trị âm.

Ví dụ 3 - Năm hai chữ số

Bạn cũng có thể sử dụng năm hai chữ số (để định dạng là YYMM ). Đây là một ví dụ để chứng minh.

SELECT PERIOD_DIFF(9906, 9905);

Kết quả:

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

Ví dụ 4 - Sử dụng Ngày hiện tại

Dưới đây là một ví dụ dẫn xuất một trong các đối số khoảng thời gian từ ngày hiện tại. Khoảng thời gian đó sau đó được so sánh với một khoảng thời gian cố định.

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

Kết quả:

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

Ví dụ 5 - Ví dụ về Cơ sở dữ liệu

Dưới đây là một ví dụ đưa ví dụ trước đó đi một bước xa hơn và so sánh khoảng thời gian hiện tại với khoảng thời gian bắt nguồn từ một ngày trong cơ sở dữ liệu.

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;

Kết quả:

+----------------+---------------------+----------------+------------+
| 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. '0000-00-00 00:00:00' không thể được biểu thị dưới dạng java.sql. Lỗi dấu thời gian

  2. Truy vấn SCHEMA THÔNG TIN của MySQL:Tại sao? Thế nào?

  3. Trang web và blog MySQL hàng đầu dành cho quản trị viên cơ sở dữ liệu

  4. Cách trả về kết quả truy vấn dưới dạng danh sách được phân tách bằng dấu phẩy trong MySQL

  5. Lỗi kết hợp bất hợp pháp của lỗi đối chiếu trong MySql