TIMESTAMP和DATETIM

TIMESTAMP和DATETIM

相同点

两者都可用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期。

不同点

datetime的默认值为null,timestamp的默认值不为null,且为系统当前时间(current_timestatmp)。如果不做特殊处理,且update没有指定该列更新,则默认更新为当前时间。

datetime占用8个字节,timestamp占用4个字节。timestamp利用率更高。

二者存储方式不一样,对于timestamp,它把客户端插入的时间从当前时区转化为世界标准时间(UTC)进行存储,查询时,逆向返回。但对于datetime,基本上存什么是什么。

二者范围不一样。timestamp范围:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’; datetime范围:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。

时区

mysql> show variables like '%time_zone%'; 

+------------------+--------+

| Variable_name    | Value  |

+------------------+--------+

| system_time_zone | CST    |

| time_zone        | SYSTEM |

+------------------+--------+

2 rows in set (0.00 sec)

system_time_zone(系统默认时区),一般为CST,在不同地区可以解读成不同时间:

美国中部时间 Central Standard Time (USA) UTC-06:00

澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30

中国标准时 China Standard Time UTC+08:00

古巴标准时 Cuba Standard Time UTC-04:00

time_zone为全局时区,默认采用系统时区(CST),由于CST有几种计算方式,有时会导致时间差,可以修改/etc/my.cnf在mysqlid下加入default-time-zone = '+8:00',重启MySQL即可永久生效。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容