探讨MySQL 保存日期用哪种数据类型
作者:一户董
在设计数据库表时不可避免的需要用到时间类型,到底选择那种数据类型来表示时间是一个值的讨论的问题,这篇文章主要介绍了MySQL保存日期用哪种数据类型,需要的朋友可以参考下
写在前面
在设计数据库表时不可避免的需要用到时间类型,到底选择那种数据类型来表示时间是一个值的讨论的问题,本文就一起来看下!
1:能用哪些数据类型
1:字符串:不要用,占用空间大,至少需要19个字节,且无法使用日期相关函数 2:Datetime,可考虑 3:Timestamp,可考虑 4:整数,可考虑
1.1:字符串
最好不要使用,占用空间大,且无法使用日期相关函数处理。
1.2:Datetime
与时区无关,保存多少就是多少,最大表示9999年,占用空间5~8字节。
1.3:Timestamp
与时区有关,占用空间4~7字节,最大表示到2038年,且在所在行更新时,该字段会自动更新为最后一次更新的时间,像"修改时间"这类标识数据行修改时间的列可考虑选择Timestamp数据类型,另外如果需要时区信息的话,也可以考虑使用该数据类型。
下面看下时区相关测试:
查看当前时区
创建数据
CREATE TABLE `time_zone_test` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `date_time` datetime DEFAULT NULL, `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO time_zone_test(date_time,time_stamp) VALUES(NOW(),NOW());
查看数据
修改时区为东7区在查看时间
SET time_zone='+7:00';
可以看到timestamp的字段在原来东八区的基础上减了一个小时。
1.4:整数值
占用4个字节,对占用空间敏感的业务,可考虑使用,然后在程序中做转换即可,或者使用MySQL函数转换,如下使用MySQL函数转换:
最后看下对比:
到此这篇关于MySQL 保存日期用哪种数据类型的文章就介绍到这了,更多相关MySQL 保存日期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!