[转]MySQL中timestamp数据类型的特色

原文地址:https://www.imooc.com/article/16158html

在使用MySQL数据库时有不少常见的误解,其中使用int类型来保存日期数据会提升数据读取的效率就是比较常见的一个误解。一般状况下在选择表中列的数据类型时咱们要选择能知足存储须要的,最小的数据类型,这大概就是你们喜欢使用int类型来保存时间数据的缘由.由于INT类型只占用4个字节面datetime类型要占用8个字节,显然INT要比datetime类型小不少,同时MySQL又提供了两个很是好用的函数FROM_UNIXTIME() 和UNIX_TIMESTAMP(),使用这两个函数能够方便的在INT和DATETIME类型之间进行转换,可是使用INT类型存储时间也给咱们带来了很多的麻烦。
首先,数据的可读性比较差,咱们在查看数据时不能直观的看出时间列中记录的一串整数所表明的时间.
其次,每次进行显示时都要经过函数进行转换,增长了数据使用的复杂成度。
那有没有什么更好的方法来存储日期数据呢?这就要用到咱们标题中所说到的timestamp类型了,timestamp类型的特色以下:
. 存储占用 4个字节,以年月日小时分秒的日期型式显示
. 存储范围'1970-01-01 00:00:01' to '2038-01-19 03:14:07'.
. 以UTC时区进行存储,可是以系统当前时间进行显示
. 能够在insert和update时把值自动更新为当前时间
由以上特色能够知道,timestamp存储占用的空间和INT类型相同,实际上timestamp类型的数据在存储时就是被保存成INT类型的数据来存储的,这和咱们使用INT来存储日期时间数据能够说是彻底同样的。因为一样是使用INT类型来保存数据,因此和INT类型同样其存储的时间范围也是有限制的,这一点你们必定要注意,超过了这个范围的日期数据建议你们使用datetime类型来保存。另外timestamp数据存储时是以UTC时区来保存的,在显示时MySQL会自动的把数据转换为当前链接所对应时间来显示。
可见,使用timestamp来存储日期时间数据不但保证了数据类型的大小同INT类型同样,同时能够显示为日期时间格式,这在给咱们使用数据带来了不少的方便。因此强烈建议你们,使用timestamp类型来存储日期数据而不要再使用INT类型了。若是你对MySQL其它的数据类型的使用特色和如何优化MySQL数据库的查询性能有兴趣,也能够关注一下个人<MySQL数据库架构设计与优化>这门课程,相信其中的内容必定会让你满意的。

数据库

相关文章
相关标签/搜索