Ubah data datetime di MySQL menjadi var bertipe time_t di C++

Awal bulan ini dapat tugas yang melibatkan dB MySQL dan bahasa native C++. Catatan kali ini terkait tentang kolom datetime di dB jika diubah menjadi tipe data time_t pada C++ dan sebaliknya.

Koneksi antara C++ dengan MySQL yang digunakan adalah lib bawaannya MySQL yang bisa didapatkan di situs resmi MySQL sesuai dengan versi yang digunakan. Salah satu blog yang membahas cukup lengkap langkah-langkah mulai download, intallasi, mbuat connection sampai contoh code untuk melakukan query ada disini. Untuk memudahkan proses develop, header file dan lib MySQL bisa di-copy-kan ke project kita hingga memudahkan proses penarian lib MySQL.

Library MySQL yang harus ada :

  • libmysql.dll
  • libmysql.lib

Minimal header file MySQL yang harus ada :

  • my_alloc.h
  • my_list.h
  • mysql.h
  • mysql_com.h
  • mysql_time.h
  • mysql_version.h
  • typelib.h

Saat getData ato select query menggunakan syntax “mysql_query” kembalian data pada tiap kolom MYSQL_ROW berupa string/char*. Kolom bertipe datetime di dB kembaliannya adalah string dengan format : “YYYY-MM-dd HH:mm:ss”, untuk mengubahnya menjadi time_t bisa menggunakan struct tm*. Tahapannya:

  • Split stringTime yang merupakan kembalian dari dB kolom datetime dengan delimiter [-], [spasi] dan [:]. Salah satu fungsi split yang bisa digunakan ada disini. Hsil split yang berupa array of char* berjumlah 6, secara urut merupakan : tahun, bulan, hari, jam, menit dan detik.
  • Inisialisasi variabel waktu dan buat variable time_info yang mengarah ke variable waktu.
    time_t waktu = 0;
    struct tm * time_info=localtime(&waktu);
  • Isi setiap properti struct tm dengan data hasil split, selanjutnya untuk mengenerate time_info menjadi time_t gunakan syntaxmktime”, code-nya :
    time_info->tm_year = atoi(tahun)-1900;
    time_info->tm_mon = atoi(bulan)-1;
    time_info->tm_mday = atoi(tanggal);
    time_info->tm_hour = atoi(jam);
    time_info->tm_min = atoi(menit);
    time_info->tm_sec = atoi(detik);
    waktu = mktime(time_info);

    Variable waktu sudah berisi data datetime sesuai dengan yang di-get dari dB.

Sebaliknya, untuk mengubah atau menyimpan data pada kolom bertipe datetime, variable time_t waktu harus diubah menjadi string /char* dengan format “YYYY-MM-dd HH:mm:ss”. Salah satu caranya bisa dengan mengubah variable waktu menjadi struct tm* dan menyalin isi datanya ke dalam string strTime sesuai format diatas dengan menggunakan fungsi strftime , code-nya :

char strTime[20];
time_t waktu =time(0); //mendapatkan waktu saat ini
struct tm* timeinfo;
timeinfo = localtime(&time);
strftime(strTime, 20, "%Y-%m-%d %H:%M:%S", timeinfo);

Selanjutnya string strTime bisa digunakan dalam string query kolom datetime yang akan insert atau update data.

 

Selesai…
Semoga bermanfaat  ~{^v^}~

Posted on Friday, 11 July 2014, in Cari Tau and tagged , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: