MySQL memiliki PERIOD_DIFF() fungsi yang memungkinkan Anda menemukan perbedaan antara dua periode. Titik diberikan sebagai dua argumen terpisah, dan harus dalam format YYMM atau YYYYMM .
Sintaks
Sintaksnya seperti ini:
PERIOD_DIFF(P1,P2)
Dimana P1 adalah periode pertama, dan P2 adalah yang kedua.
Perhatikan bahwa meskipun fungsi ini tampaknya menggunakan tanggal, argumen periode sebenarnya bukan nilai tanggal.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh dasarnya.
SELECT PERIOD_DIFF(199906, 199905);
Hasil:
+-----------------------------+ | PERIOD_DIFF(199906, 199905) | +-----------------------------+ | 1 | +-----------------------------+
Jadi dalam hal ini, ada perbedaan 1 bulan antara kedua periode tersebut.
Contoh 2 – Hasil Negatif
Inilah yang terjadi jika kita menukar dua periode tersebut.
SELECT PERIOD_DIFF(199905, 199906);
Hasil:
+-----------------------------+ | PERIOD_DIFF(199905, 199906) | +-----------------------------+ | -1 | +-----------------------------+
Seperti yang diharapkan, hasilnya adalah nilai negatif.
Contoh 3 – Dua Digit Tahun
Anda juga dapat menggunakan dua digit tahun (sehingga formatnya YYMM ). Berikut ini contoh untuk didemonstrasikan.
SELECT PERIOD_DIFF(9906, 9905);
Hasil:
+-------------------------+ | PERIOD_DIFF(9906, 9905) | +-------------------------+ | 1 | +-------------------------+
Contoh 4 – Menggunakan Tanggal Saat Ini
Berikut adalah contoh yang mendapatkan salah satu argumen periode dari tanggal saat ini. Periode tersebut kemudian dibandingkan dengan periode tertentu.
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';
Hasil:
+--------------+----------------+-----------------+------------+ | Current Date | Current Period | Previous Period | Difference | +--------------+----------------+-----------------+------------+ | 2018-06-30 | 201806 | 199901 | 233 | +--------------+----------------+-----------------+------------+
Contoh 5 – Contoh Basis Data
Berikut adalah contoh yang mengambil contoh sebelumnya selangkah lebih maju dan membandingkan periode saat ini dengan periode yang berasal dari tanggal dalam database.
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;
Hasil:
+----------------+---------------------+----------------+------------+ | Current Period | Payment Date | Payment Period | Difference | +----------------+---------------------+----------------+------------+ | 201806 | 2005-05-25 11:30:37 | 200505 | -157 | +----------------+---------------------+----------------+------------+