author Ahmad Muhardian

Bagaimana Cara Menyimpan Tanggal dan Waktu di MySQL?


Ini artikel lama, belum di-update. Isinya mungkin tidak relevan dengan kondisi sekarang

Beberapa hari yang lalu, saya melakukan downgrade sistem operasi, dari versi 15.10 ke 14.04. Secara otomatis, versi server MySQL-nya juga ikut di-downgrade, dari versi 5.6.27 ke versi 5.5.47. Pada versi yang lebih lama (5.5.47), tipe data Datetime dengan nilai default current_timestamp tidak diterima. Ketika saya mengimpor dari cadangan database, terjadi error.

mysql -u root -p < db_27_feb_2016.sql

Enter password:

ERROR 1067 (42000) at line 41: Invalid default value for 'tanggal'

Saya pun mencoba menelusuri ke baris 41 dari file SQL cadangan. Ternyata benar, di sana terdapat tipe data datetime dengan nilai default current_timestamp.

Berdasarkan tangkapan layar di atas, di sana terdapat kode SQL untuk membuat tabel artikel. Tabel ini merupakan tabel untuk proyek praktikum blog yang saya buat dulu. Saya mengganti semua tipe data datetime yang bernilai default current_timestamp ke timestamp dan mencoba mengimpor lagi.

ERROR 1064 (42000) at line 1866: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'STATS_PERSISTENT=0' at line 11

Fuh!, Error apa lagi ini? Sepertinya, ini masalah perbedaan versi saja. Tapi yang penting, sebagian dari database penting yang saya butuhkan sudah diimpor.

Sepertinya ini sebuah kesalahan saya yang tidak memperhatikan tipe data dan nilai default saat membuat database dulu. Jadi, menurut saya, sebaiknya tidak menggunakan nilai default current_timestamp pada tipe data datetime dan tipe data datetime cocoknya digunakan untuk menyimpan data seperti tanggal lahir yang datanya diinputkan secara manual. Sementara untuk data yang tidak diinputkan langsung seperti tanggal log, tanggal terbit artikel, tanggal status, dsb sebaiknya menggunakan tipe data timestamp dengan nilai default current_timestamp.