Stempel waktu MySQL :
Disimpan dalam UTC
Mereka dikonversi ke UTC pada penyimpanan dan dikonversi kembali ke zona waktu Anda saat pengambilan. Jika Anda mengubah pengaturan zona waktu , nilai yang diambil juga berubah.
Dapat diinisialisasi dan diperbarui secara otomatis
Anda dapat mengatur nilai default dan / atau nilai pembaruan otomatis CURRENT_TIMESTAMP
Memiliki rentang 1970-01-01 00:00:01 UTC
hingga2038-01-19 03:14:07 UTC
Sedangkan datetime MySQL :
Apa yang Anda simpan adalah apa yang Anda dapatkan ™.
Memiliki rentang 1000-01-01 00:00:00
hingga9999-12-31 23:59:59
Nilai di luar rentang mungkin berfungsi - tetapi hanya nilai dalam rentang yang dijamin akan berfungsi.
Anda dapat menyimpan tanggal di mana hari atau bulan nol.
Ini adalah cara MySQL menyimpan ulang tahun! Anda tidak dapat melakukannya dengan TIMESTAMP
, dengan satu-satunya pengecualian adalah nilai nol 0000-00-00
.
Anda dapat menyimpan tanggal yang tidak valid, jika Anda membutuhkannya, dalam mode ALLOW_INVALID_DATES .
Anda dapat menetapkan nilai default NOW()
dalam beberapa kasus, tetapi cara yang lebih disukai dan lebih alami dari tanggal yang diinisialisasi dan diperbarui secara otomatis adalah TIMESTAMP
.
Dan tentu saja ada juga DATE
dan TIME
, yang berfungsi seperti itu DATETIME
, tetapi tentu saja DATE
tidak peduli waktu dan TIME
tidak peduli dengan kencan. Keempat tipe data bekerja dengan sempurna dengan beragam fungsi tanggal dan waktu , tetapi ketika Anda mencampur tipe data Anda harus menyadari efek konversi .
Sekarang, untuk pertanyaan Anda: Anda harus menggunakannya di DATETIME
mana-mana. Bukan karena alasan teknis, tetapi karena Anda masih tidak jelas tentang cara kerja MySQL, DATETIME
adalah pilihan yang lebih sederhana. Ini berarti Anda harus menghitung cap waktu saat ini di PHP sebelum menyimpan, semudah:
$mysqldate = date("Y-m-d H:i:s");
Fungsi tanggal PHP berfungsi seperti:
string date ( string $format [, int $timestamp = time() ] )
The "Y-m-d H:i:s"
Format adalah salah satu yang kompatibel dengan MySQL dan dengan meninggalkan parameter kedua kosong, date()
panggilan time()
untuk mendapatkan arus UNIX timestamp .
Menggunakan TIMESTAMP
bukan DATETIME
memiliki nilai tambah MySQL mengambil alih tanggung jawab memutuskan cap waktu saat ini, dan Anda dapat melewati bidang ketika Anda memasukkan / memperbarui. Tetapi karena Anda sudah mengirim kueri, dan kode untuk mendapatkan cap waktu saat ini di PHP minimal, Anda dapat menggunakan DATETIME
semuanya dengan aman .
Adapun kode aktual untuk menyimpan stempel waktu PHP ke dalam basis data, Anda harus melihat pada PHP Data Objects , dan jika Anda masih belum jelas, tanyakan pada StackOverflow sebagai gantinya. Tetapi sudah ada hampir 1.5k pertanyaan terkait , pastikan Anda menjalaninya sebelum bertanya. Sekedar petunjuk, pernyataan yang disiapkan adalah bagaimana anak-anak keren melakukannya.