Meskipun @jsnplank benar bahwa cap waktu diperlakukan secara berbeda dan Anda harus mempertimbangkan untuk menggunakan tipe data datetime untuk 2 kolom tertentu ini, namun, ia gagal menjelaskan pesan kesalahan.
Pesan kesalahan kemungkinan besar merupakan hasil kombinasi dari cara mysql memperlakukan bidang stempel waktu ketika tidak ada nilai default yang diberikan dan pengaturan mode sql Anda.
-
Anda mendefinisikan kedua kolom stempel waktu sebagai bukan nol, tanpa nilai default tertentu yang ditetapkan. Ini berarti bahwa nilai default kolom stempel waktu pertama adalah current_timestamp() dan juga akan diperbarui ke current_timestamp() setiap kali catatan berubah. Inilah sebabnya mengapa bidang stempel waktu pertama tidak menghasilkan pesan kesalahan, tidak peduli yang mana di antara keduanya yang merupakan yang pertama.
Namun, nilai default kolom stempel waktu bukan nol ke-2 adalah '0000-00-00 00:00:00' jika Anda tidak secara eksplisit menentukan nilai default.
-
Mungkin no_zero_date mode sql juga diaktifkan di server Anda baik secara eksplisit atau sebagai bagian dari mode sql ketat. Mode sql ini menghasilkan kesalahan jika Anda ingin menetapkan '0000-00-00 00:00:00' sebagai nilai default atau ingin memasukkan nilai ini ke bidang tanggal apa pun.
Jadi, Anda dapat menggunakan tipe data stempel waktu di tabel Anda, tetapi buat yang ke-2 nullable atau berikan 0 atau tanggal yang valid (seperti epoch) sebagai nilai default eksplisit.
Karena Anda menandai tanggal mulai dan akhir dengan bidang ini, menggunakan tanggal waktu alih-alih stempel waktu sebagai tipe data mungkin merupakan ide yang baik.