出现问题:
在建表时有这样一行
CREATE TABLE `t_auth_user` (
...
`login_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次登录时间',
...
}
当建表时出现 Invalid default value for ‘login_time’的错误,
开始查资料说是因为只有MySQL5.6之前的版本才能用,后面的版本需要改成’timestamp’,改了之后无果,
于是翻一下官网,结果说的是datatime还可以用,不过范围是'1000-01-01 00:00:00' to '9999-12-31 23:59:59'
,改了之后就可以啦~
顺带了解了一下Mysql关于时间的存储
科普——MySQL时间存储
- date,datetime:一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction] 即data + time,对于date字段来说,它只支持date部分,如果插入了time部分的内容,它会丢弃掉该部分的内容,并提示一个warning。
- timestamp:它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。
date;datetime | timestamp | |
---|---|---|
存储方式 | “YYYY-MM-DD HH:MM:SS” | 需要与UTC进行转换 |
时间范围 | ‘1000-01-01 00:00:00.000000’–‘9999-12-31 23:59:59.999999’ | ‘1970-01-01 00:00:01.000000’–‘2038-01-19 03:14:07.999999’ |
参考资料:
1. MySQL中有关TIMESTAMP和DATETIME的总结–SlowTech