Cara Terbaik Menyimpan Tanggal ke Database MySQL

Saat mengawali belajar MySQL dulu, saya dipusingkan dengan banyaknya format tanggal dan bagaimana seharusnya tanggal disimpan di database. Sampai akhirnya saya menemukan cara yang terbaik buat saya, dan tetap saya gunakan sampai sekarang.

Umumnya tanggal di MySQL disimpan dengan tipe datetime. CMS populer seperti WordPress menggunakan datetime. Ada juga yang menyimpan tanggal sebagai INT dengan format Unix Timestamp, seperti 1234567890. Kelebihan tipe data INT adalah proses pengambilan data lebih cepat (WHERE date = 1234567890).

Kelebihan lain menggunakan menggunakan INT, tanggal yang berupa Unix Timestamp tersebut sekaligus dapat digunakan sebagai id dengan luwes. Jika digunakan di URL kira-kira seperti berikut:

  1. http://example.com/artikel/1234567890 

Namun angka tersebut tidak human readable, dan memiliki kekurangan tidak memiliki lebar konsisten, dll. Untuk itu saya memikirkan cara lain yang lebih baik tetapi masih dengan kelebihan diatas. Akhirnya saya gunakan format 20180705081400. Tidak cukup menggunakan INT, maka harus disimpan dengan tipe BIGINT. Dengan format tersebut, lebar integer akan tetap 14 digit hingga tahun 9999. Sehingga memudahkan sisi programming.

Yang menarik adalah, format 14 digit tetap dengan mudah bisa dikonversi ke format lain.

  1. <?php 
  2.  
  3. $time = strtotime('20180705081400'); 

Hal ini sepertinya tidak terdokumentasi di php.net, sehingga jarang yang menggunakannya.

Dari sisi query MySQL, operator < (kurang dari) maupun > (lebih dari) juga dapat bekerja dengan baik dan sesuai harapan.

Tip: Selalu simpan tanggal dengan timezone UTC (GMT+0000).