1.DATE、DATETIME和TIMESTAMP 表达的时间范围
Type | Range | Remark |
DATE | '1000-01-01' to '9999-12-31' | 只有日期部分,没有时间部分 |
DATETIME | '1000-01-01 00:00:00' to '9999-12-31 23:59:59' | 时间格式为 Y YYY-MM-DD hh:mm:ss ,默认精确到秒 |
TIMESTAMP | '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC | 默认精确到秒 |
2.DATETIME和TIMESTAMP 最大时间精确度
5.7 之后的版本(其实应该说5.6.5),在默认的秒精确度上,可以带小数,最多带6位小数,即可以精确到 microseconds (6 digits) precision。
Type | Range | Remark |
DATETIME | '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999' | 'YYYY-MM-DD hh:mm:ss [.fraction ]' |
TIMESTAMP | '1970-01-01 00:00:01.000000' to '2038-01-19 03:14:07.999999' | 'YYYY-MM-DD hh:mm:ss [.fraction ]' |
3.DATETIME和TIMESTAMP 区别
(1) 时间范围不一样,TIMESTAMP 要小很多 ,且最大范围为2038-01-19 03:14:07.999999,到期也不远了。
(2)对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。