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 | +----------------+---------------------+----------------+------------+