MySQL 8 之前的版本,datetime 字段的默认值可以设置为 0000-00-00 00:00:00。
但这在 MySQL 8 中是不允许的,MySQL 8 中的 datetime 的值的范围是 1000-01-01 00:00:00 到 9999-12-31 23:59:59 之间。
因此,在 MySQL 8 中,我们可以将 datetime 的默认值设置为 1000-01-01 00:00:00
例如
CREATE TABLE `test`.`test` ( `id` int NOT NULL AUTO_INCREMENT, `created_at` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', PRIMARY KEY (`id`) );
同理,如果在 MySQL 8 中,timestamp 默认赋值 0000-00-00 00:00:00 也是错误的。它的值的范围是 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC。
这时候,timestamp 的默认值就和你系统的时区有关系了。在中国,我们一般会设置为东 8 区,那么,默认的时间范围就是 1970-01-01 08:00:01 到 2038-01-19 03:14:07。
我以前百思不得其解的 1970-01-01 00:00:01 不能用终于有结果了。
例如
CREATE TABLE `test`.`test2` ( `id` int NOT NULL AUTO_INCREMENT, `updated_at` timestamp NOT NULL DEFAULT '1970-01-01 08:00:01', PRIMARY KEY (`id`) );
目前尚无回复