Skip to main content

Fungsi DateDiff di MS Access

Di Access, fungsi DateDiff digunakan untuk menghitung perbedaan di antara dua tanggal atau jam dalam interval tertentu. Interval tertentu ini bisa berupa periode tertentu seperti hari, minggu, bulan, bahkan sampai ke jam atau detik. Jadi, misalnya perbedaan interval tertentu selama dua minggu, satu tahun, 20 jam, dan sebagainya.
Berbagai macam contoh aplikasi DateDif di VBA Access melalui Immediate Window

Sintaks penulisan fungsi DateDiff adalah sebagai berikut:

DateDiff (Interval, Date1, Date2 [,FirstDayOfWeek] [,FirstWeekOfYear])

Keterangan:

Inteval (interval): wajib diisi, berupa kode dengan tipe data string/text, menunjukkan interval waktu yang digunakan untuk menghitung perbedaan. Kodenya adalah sebagai berikut:

Nilai Deskripsi
yyyy Tahun
q Kuartal
m Bulan
y Hari dalam tahun
d Hari
w Hari dalam minggu
ww Minggu
h Jam
n Menit
s Detik

Date1 (tanggal1), Date2 (tanggal2): wajib  diisi, merupakan tanggal yang akan dihitung perbedaannya, tipenya Variant (Date) atau Date/Time.

FirstDayOfWeek  (hariPertamaMinggu): tidak wajib  diisi (opsional), merupakan konstanta yang digunakan untuk menentukan hari pertama dalam satu minggu, tipenya Integer. Jika kosong, maka nilainya 1 (hari Minggu). Berikut ini tabelnya:

Konstanta Nilai Keterangan
vbUseSystem 0 NLS API setting (system)
vbSunday 1 Minggu (default)
vbMonday 2 Senin
vbTuesday 3 Selasa
vbWednesday 4 Rabu
vbThursday 5 Kamis
vbFriday 6 Jumat
vbSaturday 7 Sabtu

FirstWeekOfYear (mingguPertamaTahun): tidak wajib  diisi (opsional), merupakan konstanta yang digunakan untuk menentukan minggu pertama dalam satu tahun, tipenya Integer. Jika kosong, maka hari saat tanggal 1 Januari  dianggap sebagai minggu pertama. Berikut ini tabelnya:

Konstanta Nilai Keterangan
vbUseSystem 0 NLS API setting (system)
vbFirstJan1 1 Hari saat tanggal 1 Januari  dianggap sebagai minggu pertama
vbFirstFourDays 2 Empat hari pertama pada tahun baru dianggap sebagai minggun pertama
vbFirstFullWeek 3 Tujuh hari pertama pada tahun baru dianggap sebagai minggun pertama

Untuk menghitung jumlah hari antara tanggal Date1 dan Date2, kita dapat menggunakan "y" atau "d". Bila menggunakan "w", fungsi DateDiff menghasilkan jumlah hari yang dinyatakan pada FirstDayOfWeek di antara dua tanggal itu. Contohnya seperti ini:

DateDiff("y","11/13/2017","11/29/2017"), atau
DateDiff("d","11/13/2017","11/29/2017")

akan memberikan hasil yang sama yaitu 16 (16 hari)

Tetapi

DateDiff("w","11/13/2017","11/28/2017"), atau 
DateDiff("w","11/13/2017","11/29/2017"), atau  
DateDiff("w","11/13/2017","11/30/2017")

hanya menghasilkan 2 (2 Minggu, pada contoh di atas, nilai FirstDayOfWeek adalah Minggu)

Dalam hal ini, jika Date1 jatuh pada hari Senin, DateDiff menghitung berapa jumlah hari Senin sampai tanggal Date2 (ada 2 Senin, yaitu tanggal 20 dan 27 November 2017, tanggal 13 November 2017 tidak ikut dihitung).

Jika nilai "w" diganti dengan "ww" dan kita menggunakan FirstDayOfWeek, maka

DateDiff("ww","11/13/2017","11/28/2017"), atau
DateDiff("ww","11/13/2017","11/30/2017",vbMonday)

akan memberikan hasil 2, karena ada dua Minggu (tanggal 19 dan 26 November 2017) dan 2 Senin (tanggal 20 dan 27 November 2017).

Tetapi:

DateDiff("ww","11/13/2017","11/28/2017", vbThursday)

akan memberikan hasil 3, karena ada tiga Selasa, yaitu tanggal 14, 21 dan 28 November 2017.

Jika Date1 lebih besar dari pada Date2, maka DateDiff menghasilkan nilai negatif. Misalnya seperti ini:

DateDiff("d","11/13/2017","11/2/2017") menghasilkan nilai -11
DateDiff("ww","11/28/2017","11/14/2017") menghasilkan nilai -2

Pada situasi tertentu, kita mungkin hanya ingin menuliskan tanggal dan bulan saja, sedangkan tahun tidak diikutsertakan. Dalam kasus ini, Access membaca tahun sesuai dengan tahun menurut Sistem Operasi Windows. Jadi bila tanggal pada Windows adalah 27 November 2017 (tahun 2017), maka kita bisa menghitung perbedaan dua tanggal seperti contoh berikut ini:

DateDiff("d","27 Nov","30 Nov 2017")
DateDiff("d","27 Nov 2017","30 Nov")
DateDiff("d","27 Nov","30 Nov")

memberikan hasil  yang sama dengan

DateDiff("d","27 Nov 2017","30 Nov 2017")

yaitu 3

Berikut ini adalah berbagai macam contoh aplikasi fungsi DateDiff di Access.

Fungsi Output Keterangan
DateDiff("h","27 Nov 2017 04:12:12 PM","30 Nov 2017 04:12:12 PM") 72 72 jam
DateDiff("d",#27 Nov 2017 04:12:12 PM#,"30 Nov 2017 04:12:12 PM") 3 3 hari
DateDiff("yyyy",#27 Nov 2016 04:12:12 PM#,#30 Nov 2017 04:12:12 PM#) 1 1 tahun
DateDiff("d",#27 Nov 2016 04:12:12 PM#,#30 Nov 2017 04:12:12 PM#) 368 368 hari
DateDiff("d",#31 Dec 2016 04:12:12 PM#,#1 Jan 2017 04:12:12 PM#) 1 1 hari
DateDiff("h",#31 Dec 2016 04:12:12 PM#,#1 Jan 2017 04:12:12 PM#) 24 24 jam
DateDiff("yyyy",#31 Dec 2016 04:12:12 PM#,#1 Jan 2017 04:12:12 PM#) 1 1 tahun
DateDiff("n","27 Nov 2017 04:12:12 AM","27 Nov 2017 04:12:12 PM") 720 720 menit (12 jam)
DateDiff("s","27 Nov 2017 04:12:12 AM","27 Nov 2017 05:12:12 AM") 3600 3600 detik (1 jam)

Pada contoh di atas, saat menghitung selisih tahun antara tanggal 31 Des 2016 dan 1 Jan 2017, hasilnya adalah 1 (1 tahun), karena kita menggunakan interval tahun ("yyyy"). Dalam hal ini, yang dihitung adalah selisih tahun 2017 dengan 2016,  sementara hari (tanggal) dan bulannya tidak dihitung.

Pengaturan fungsi DateDiff mengikuti pengaturan yang ada  di Control Panel. Jadi, bila format penanggalan menggunakan Indonesia sebagai acuannya, maka cara menuliskan dan menampilkan hasil juga akan menggunakan penanggalan Indonesia. Demikian juga, penanggalan Amerika di Control Panel juga akan mempengaruhi tampilan DateDiff menjadi penanggalan Amerika juga.
Hal yang sama juga terjadi pada properti Calendar. Bila properti Calendar di Control Panel menggunakan Gregorian, maka tanggal yang digunakan juga menggunakan Gregorian. Demikian pula, bila menggunakan Hijri (Hijriah), maka format penulisan di DateDiff juga menggunakan Hijri (Hijriah).

Comments

Post a Comment

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access