Di Oracle Database, MONTHS_BETWEEN()
fungsi mengembalikan jumlah bulan antara dua tanggal.
Sintaks
Sintaksnya seperti ini:
MONTHS_BETWEEN(date1, date2)
Contoh
Ini contohnya:
SELECT MONTHS_BETWEEN(DATE '2030-06-10', DATE '2030-02-10')
FROM DUAL;
Hasil:
4
Dalam hal ini, ada tepat empat bulan di antara kedua tanggal tersebut.
Bulan dan hari terakhir bulan ditentukan oleh parameter sesi NLS_CALENDAR
. Lihat Cara Memeriksa Nilai Parameter NLS untuk mengetahui kalender yang digunakan sesi Anda. Milik saya menggunakan kalender Gregorian.
Bulan Pecahan
Fungsi ini memungkinkan untuk bulan pecahan. Jika kedua tanggal tersebut menyertakan porsi hari yang berbeda, maka Oracle Database akan mengerjakan komponen pecahan yang dapat digunakan.
Contoh:
SELECT MONTHS_BETWEEN(DATE '2030-06-10', DATE '2030-02-25')
FROM DUAL;
Hasil:
3.51612903225806451612903225806451612903
Bulan Negatif
Jika tanggal kedua lebih lambat dari tanggal pertama, maka jumlah negatif dikembalikan:
SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '2030-06-10')
FROM DUAL;
Hasil:
-4
Tanggal Di Luar Rentang
Tanggal nol dan tanggal di luar rentang lainnya menghasilkan kesalahan.
Contoh:
SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '0000-00-00')
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '0000-00-00') FROM DUAL Error at Command Line : 1 Column : 47 Error report - SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0 01841. 00000 - "(full) year must be between -4713 and +9999, and not be 0" *Cause: Illegal year entered *Action: Input year in the specified range
Seperti yang dinyatakan oleh pesan kesalahan, tahun (penuh) harus antara -4713
dan +9999
, dan bukan 0
.
Membandingkan Tanggal dengan Tanggal Saat Ini
Kita dapat melewati SYSDATE
sebagai argumen datetime untuk membandingkan tanggal dengan tanggal saat ini:
SELECT
SYSDATE,
MONTHS_BETWEEN(SYSDATE, DATE '2030-03-01')
FROM DUAL;
Hasil:
SYSDATE MONTHS_BETWEEN(SYSDATE,DATE'2030-03-01') ____________ ____________________________________________ 13/AUG/21 -102.587825194145758661887694145758661888
Argumen Tidak Ada
Memanggil MONTHS_BETWEEN()
dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun, menghasilkan kesalahan:
SELECT MONTHS_BETWEEN()
FROM DUAL;
Hasil:
Error starting at line : 1 in command - SELECT MONTHS_BETWEEN() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: