-
Biasanya, Anda tidak boleh melakukan keduanya:tipe data di lapisan database harus bermakna (mungkin) sendiri dan tidak bergantung pada aplikasi Anda untuk menafsirkannya. Seperti @Jim DeLaHunt mengatakan , ini memungkinkan database untuk dengan mudah memanipulasi/menafsirkannya dari SQL seperti yang diperlukan (dan juga memungkinkan Anda untuk dengan mudah mengakses data yang sama dari basis kode aplikasi lain di masa mendatang).
MySQL memiliki lima jenis temporal , hanya dua yang menyimpan tanggal dan waktu:
DATETIME
danTIMESTAMP
.Seperti yang telah disinggung orang lain, perbedaannya terletak pada apakah Anda ingin menyimpan zona waktu - meskipun menurut saya cara melihatnya cukup membingungkan:
-
TIMESTAMP
menggunakan sesitime_zone
variabel untuk mengubah input menjadi stempel waktu UTC dan kemudian kembali lagi untuk output:ini berguna untuk menentukan waktu yang tepat; -
DATETIME
hanya menyimpan tanggal dan waktu tanpa memperhatikan zona waktu, seperti mengambil foto kalender dan jam:ini berguna untuk menentukan peristiwa yang terjadi pada waktu lokal yang sama secara global.
-
-
Sama seperti Anda akan mendeklarasikan kolom lainnya, Anda menentukan tipe data yang relevan setelah nama kolom.
Hati-hati dengan
TIMESTAMP
memiliki fitur tambahan, seperti pembaruan otomatis , yang mungkin ingin Anda nonaktifkan dalam deklarasi kolom Anda jika diinginkan. -
Menggunakan salah satu jenis temporal di atas, Anda akan dapat melakukan semua ini (menggunakan fungsi tanggal seperti yang dipersyaratkan). Output default
TIMESTAMP
danDATETIME
types adalah string dalam'YYYY-MM-DD HH:MM:SS'
formatnya.Secara khusus, "waktu yang telah berlalu" dari membandingkan dua nilai misalnya dapat diperoleh dengan
TIMEDIFF()
fungsi:SELECT TIMEDIFF(end, start) AS elapsed FROM my_table WHERE ...