Hanya pertanyaan singkat tentang menyimpan "waktu" dalam database. Saya mencatat waktu pengguna menjalankan yang dalam format 00: 00: 00: 00 (jam, menit, detik, milidetik).
Saya awalnya akan menyimpannya TIME
tetapi kemudian saya menyadari MySQL tidak mendukung milidetik dalam jenis ini.
Saya akan menyimpan waktu aktual yang diambil dari stopwatch pengguna, bukan waktu mereka berlari dan selesai (ini akan dihitung sebelum dimasukkan).
Apa jenis bidang terbaik yang akan digunakan? Aku sedang berpikir double
atau tidak float
, tapi aku tidak yakin itu akan berhasil?
sumber
interval
tipe data SQL standar untuk tujuan ini. Tetapi tidak semua DBMS (dan tentunya bukan MySQL) mendukung hal ini.Itu tergantung pada berapa lama Anda ingin mengukur. Jika Anda tidak akan merekam lebih lama dari 2 ^ 32, atau 4294967296 ms daripada int unsigned biasa saja. Itu sesuai dengan sekitar 50 hari waktu jam, btw.
Jika Anda menyimpan cap waktu unix atau interval yang lebih besar maka lihat menggunakan bigint. Ini memberi Anda 8 byte ruang, atau kemampuan untuk merekam waktu selama 1.84467440737096e + 19 ms (yang kira-kira 500 Juta tahun)
sumber
Jika Anda menggunakan MySQL 5.6.4 atau lebih baru, Anda bisa menggunakan
TIME(3)
,DATETIME(3)
danTIMESTAMP(3)
jenis kolom untuk menyimpan hingga 6 digit fraksional (ganti3
dengan jumlah digit fraksional yang Anda butuhkan). Bagian pecahan ditambahkan ke string waktu setelah titik; Contoh:2018-09-08 17:51:04.781
.Referensi resmi
sumber