Mysql中多种日期类型——DATETIME、TIMESTAMP、TIME、YEAR、DATE的区分
问题描述
Mysql设置time时,会提示多种time格式。使用go语言的time.Time类型,又更容易混肴,因此做一下区分。
time类型
time类型保存的是一个时分秒,比如10:00:00
这样的内容。和go语言中的time.Time格式完全不是一回事。
同样的,还有YEAR类型,则是只保存一个年份。
DATE类型则是只保存年月日。
datetime和timestamp类型
这两个比较容易混肴还是,之前一直也没搞懂。顺带吐槽一下Google这个智能推荐的答案,这说了个啥呢…
二者存储的内容相同,均为 YYYY-MM-DD HH:MM:SS
区别
1、占用大小不同:
DATETIME 8字节
TIMESTAMP 4字节。
2、取值范围不同:
DATETIME类型范围: '1000-01-01 00:00:00'~'9999-12-3 23:59:59'
TIMESTAMP类型范围: '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC
3、存储时区不同:
DATETIME 在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关;
TIMESTAMP 值的存储是以 UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的。
总结
1 在满足使用条件的情况下,占据存储空间越少越好,此时选择timestamp比datetime更好.
2 timestamp类型的存储,是以UTC时区来保存的,在显示时会自动将日期数据转换,如果时间的场景对应多个时区,此时选择timestamp比datetime更好.
3 关于日期的使用范围, timestamp类型最大只支持到2038-01-19年,所以如果使用的日期时间较大, 则选择datetime比timestamp更好.
贴一个另一个博文的总结
但对我而言,我觉得在数据量不大、不存在跨国业务的数据库时候,用DATETIME会方便一些。因为这样可以避免因时区问题导致的错误。
直接引用一张图来对比方便。图源
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!