Membuat Format Tanggal Sesuai Kebutuhan

Jika anda baru mulai bermain dengan Visual Basic, hal-hal yang keliahatannya sepele bisa menjadi masalah besar seperti apa yang saya alami 3 tahun yang lalu. Hal yang paling saya ingat adalah ketika saya harus memformat tanggal output ke format YYYY-MM-DD. Ketika itu saya benar-benar pusing karena tidak tahu solusi-nya. Hal itu terjadi di karenakan saya ingin memasukkan date stamp untuk memberikan informasi kapan transaksi tersebut di buat ke dalam database MySQL saya, kalau untuk modified transaction date kan bisa memakai built-in tipe data TIMESTAMP dari MySQL.

Hal ini juga terjadi ketika kita akan memformat data MySQL ke format tanggal dengan format Indonesia.

Sebetulnya Visual Basic sudah memberikan satu built-in function untuk mengatasi hal ini. Function tersebut adalah Format. Cara penggunaannya sangat mudah yaitu Format(data_input, format). Udah gitu aja…

Meskipun fungsi Format ini bisa di inject langsung ke string SQL kita, saya sangat menyarankan agar hasil format ini di masukkan ke variable dulu. Jika dalam kasus saya ini, tampung dulu hasil Format ini ke satu variable dengan tipe String. Misalnya saja kita ingin mengubah suatu data tanggal yang berasal control DTPicker dengan nama cmbtgl_trans dan kita ingin memasukkannya ke database MySQL yang menerima format tanggal YYYY-MM-DD, maka baris program yang harus anda tulis seperti ini:

'/deklarasikan dulu variable untuk menampung hasil tanggal
Dim tgl_trans As String
'/isi variable dengan hasil format
tgl_trans = Format(cmbtgl_trans.Value, "YYYY-MM-DD")

Lalu anda tinggal memasukkan variable tgl_trans tersebut ke SQL string anda.

Kalau kasusnya kebalikan, kita ingin mengambil data MySQL dengan format YYYY-MM-DD ke format tanggal Indonesia yang berformat DD-MM-YYYY, tinggal rubah dikit aja rumus format di atas menjadi:

cmbtgl_trans.Value = Format(recordset1.Fields("tgl_trans").Value, "DD-MM-YYYY")

Tentu anda harus membuka data anda dan menampungnya ke Recordset anda dulu. Sebetulnya, untuk membuka data tamggal ke sebuah control DTPicker anda tidak perlu memformatnya karena khusus untukĀ DTPicker bisa menerjemahkan sendiri secara internal, tapi anda harus melakukan format jika anda ingin menampilkan data tanggal tersebut ke control Textbox atau label yang tidak bisa memformat ulang sebuah data tanggal.

Simpel sekali kan?

Artikel-artikel Yang Berhubungan Dengan Artikel Ini

13 Komentar

boniandika  on February 20th, 2009

makasih banyak ya Mas tas materi materinya yang dipostkan,,,mudah mudahan berkah

Suhendar Wiryawan  on May 4th, 2010

Saya ucapkan banyak terima kasih kepada Bang Edi karena artikelnya sudah banyak membantu saya dalam menyelesaikan tugas kantor.

Bart. Edi  on May 4th, 2010

@Suhendar Wiryawan: sama-sama pak….

ary  on July 8th, 2010

mas bisa bantu saya gk??koq skrip saya koq gk bisa jalan y…ini skrip saya mas…
Private Sub Form_Load()
Move (Screen.Width – Width) / 2, _
(Screen.Height – Height) / 3
Call BukaDatabase
DTPicker1.Value = Format(Date, “dd MMMM yyyy”)
End Sub

Private Sub TbKeluar_Click()
Unload Me
End Sub

Private Sub TbTampil_Click()
Dim SQL As String
Dim Rs_Tampil As New ADODB.Recordset

Set Rs_Tampil = New ADODB.Recordset

SQL = “”
SQL = ” SELECT Penjualan.No_Nota, Penjualan.Tgl_Nota, ” _
& ” Detail_Penjualan.Kode_Barang, Barang.Nm_Barang, ” _
& ” Detail_Penjualan.Harga_Jual, ” _
& ” Detail_Penjualan.Jumlah_Jual, ” _
& ” Detail_Penjualan.Subtotal, Pengguna.Nama From” _
& ” ((Penjualan INNER JOIN Detail_Penjualan ON ” _
& ” Penjualan.No_Nota = Detail_Penjualan.No_Nota) ” _
& ” INNER JOIN Pengguna ON ” _
& ” Penjualan.UserId = Pengguna.UserId) ” _
& ” INNER JOIN Barang ON ” _
& ” Detail_Penjualan.Kode_Barang = Barang.Kode_Barang ” _
& ” WHERE Penjualan.tgl_Nota =’” _
& CDate(DTPicker1.Value) & “‘”

Set Rs_Tampil = KoneksiDB.Execute(SQL)
If Rs_Tampil.BOF Then
MsgBox “Maaf penjualan dengan tanggal ” _
& Format(DTPicker1.Value, “dd MMMM yyyy”) _
& ” tidak tersedia !”, vbInformation + vbOKOnly, _
“Informasi”
Else
DElaporan.Commands(5).CommandText = SQL
With rptjualtgl
.Sections(“section4″).Controls(“label12″).Caption = _
Format(DTPicker1.Value, “dd/MM/yyyy”)
.Sections(“section4″).Controls(“label13″).Caption = _
Format(Date, “dd MMMM yyyy”)
.Refresh
.WindowState = 2
.Show 1
End With
End If
End Sub

Bart. Edi  on July 9th, 2010

@ary: kesalahan yang muncul apa?

ary  on July 12th, 2010

muncul kesalahan ( “[microsoft][odbc sql server driver][sql server]the conversion of a char data type to a datetime data type resulted in an out-of range datetime value” )
mas boleh minta alamat emailnya

ary  on July 12th, 2010

pesan errornya [microsoft][odbc sql server driver][sql server]the conversion of a char data type to a datetime data type resulted in an out-of range datetime value
boleh tw alamat emailnya

maskatar  on August 9th, 2010

Makasih bos…

Tapi gini bos…aku pengen bikin tanggal yang ga mengikuti tanggalan system…jadi meskipun tanggalan di system di rubah…di program ga berubah…

wahyu  on January 26th, 2011

mau tanya,,,aku punya data
nama field tgl
type timestamp
atribut : ON UPDATE CURRENT_TIMESTAMP
default :CURRENT_TIMESTAMP
extra : on update CURRENT_TIMESTAMP
isinya filednya jadinya seperti ini “2011-01-26 13:58:14″
gmn ya melakukan filter tanggal…??
sqlq seperti ini,tapi tanggalnya ga di baca,,
mohon pencerahan
sql = “SELECT * FROM penjualan_manual WHERE tgl >= ‘” + Format(frm_penjualan_manual.dt_1.Value, “YYYY/MM/DD”) + “‘ and tgl <='" + Format(frm_penjualan_manual.dt_2.Value, "YYYY/MM/DD ") + "' order by tgl desc"

saya pke mysql + vb 6.0
klo ada script nya tolong diemail.

itneedhelp  on January 31st, 2011

thanks banget atas artikel ini, sangat membantu banget.

Park  on February 20th, 2011

Pak mau tanya nih klw saya punya database input nama, jd di formnya cuma input nama aja, tp saya pngen didatabase nya muncul tanggal sama jam saat qt nginput.. boleh minta bantuannya itu gmn codingnya.. kirim ke email saya pak terimakasih..

Rozi  on April 10th, 2011

Mau nanya nas ? gimana source code lok mau yimpan satu lawan banyak mas

antaliga  on December 8th, 2012

Mas saya juga punya masalah yang sama Mas, seperti mas Wahyu kalau bisa saya minta di Email juga ya Mas..

Berikan opini anda tentang artikel ini

CommentLuv badge