Mặc dù @jsnplank nói đúng rằng dấu thời gian được xử lý khác nhau và bạn nên cân nhắc sử dụng kiểu dữ liệu ngày giờ cho 2 cột cụ thể này, tuy nhiên, anh ấy không giải thích được thông báo lỗi.
Thông báo lỗi rất có thể là kết quả của sự kết hợp giữa cách mysql xử lý các trường dấu thời gian khi không có giá trị mặc định nào được cung cấp và cài đặt chế độ sql của bạn.
-
Bạn xác định cả hai cột dấu thời gian là không rỗng, không có bất kỳ giá trị mặc định cụ thể nào được đặt. Điều này có nghĩa là giá trị mặc định của cột dấu thời gian đầu tiên sẽ là current_timestamp () và cũng sẽ được cập nhật thành current_timestamp () bất cứ khi nào bản ghi thay đổi. Đây là lý do tại sao trường dấu thời gian đầu tiên không tạo ra thông báo lỗi, bất kể trường nào trong số 2 là trường đầu tiên.
Tuy nhiên, giá trị mặc định của cột dấu thời gian không rỗng thứ 2 sẽ là '0000-00-00 00:00:00' nếu bạn không xác định rõ ràng giá trị mặc định.
-
Có thể là no_zero_date chế độ sql cũng được bật trên máy chủ của bạn một cách rõ ràng hoặc là một phần của chế độ sql nghiêm ngặt. Chế độ sql này tạo ra lỗi nếu bạn muốn đặt '0000-00-00 00:00:00' làm giá trị mặc định hoặc muốn chèn giá trị này vào bất kỳ trường ngày nào.
Vì vậy, bạn có thể sử dụng kiểu dữ liệu dấu thời gian trong bảng của mình, nhưng hãy đặt kiểu thứ hai là giá trị vô hiệu hoặc cung cấp 0 hoặc bất kỳ ngày hợp lệ nào (chẳng hạn như kỷ nguyên) làm giá trị mặc định rõ ràng.
Vì bạn đang đánh dấu ngày bắt đầu và ngày kết thúc bằng các trường này, nên nhập ngày giờ thay vì dấu thời gian làm kiểu dữ liệu có thể là một ý tưởng hay.