文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中怎么选择时间类型存储格式

2024-04-02 19:55

关注

本篇文章给大家分享的是有关MySQL中怎么选择时间类型存储格式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。


int型:
存储长度: 4字节
表示范围: date('Y-m-d H:i:s', 4294967295) 最大到 2106-02-07 14:28:15 ,如果一个企业活过这么久,就需要数据库考虑 bigint 或者datetime类型了。
是否为空: 可以为空,但是业务逻辑设计建议设置非空
存储格式: 数值类型存储,节省空间
时区相关: 与时区无关
默认值 :  可以根据业务逻辑设置默认值为某个时间。
优点
  1 类型简单,cpu处理该字段的运算会比较快,占用字节小,节省空间。
  2 查询速度快。

datetime:
存储长度: 8字节
表示范围:'1000-01-01 00:00:00'-'9999-12-31 23:59:59'
是否为空: 允许为空值,可以自定义值,且insert和update操作不会自动修改其值。
储存格式: 以实际格式存储(Just stores what you have stored and retrieves the same thing which you have stored.)
时区相关: 与时区无关
默认值  : 不指定默认值的时候 MySQL会初始化为'0000-00-00 00:00:00'
mysql> CREATE TABLE `tm` (
    -> `d1` int(10) unsigned NOT NULL default '0',
    -> `d2` timestamp NOT NULL default CURRENT_TIMESTAMP,
    -> `d3` datetime NOT NULL,
    -> `d4` timestamp NOT NULL default CURRENT_TIMESTAMP on update current_timestamp
    -> );
Query OK, 0 rows affected (0.02 sec)
mysql> insert into tm(d1,d4) values(1458612980,now());
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from tm;
+------------+---------------------+---------------------+---------------------+
| d1         | d2                  | d3                  | d4                  |
+------------+---------------------+---------------------+---------------------+
| 1458612980 | 2016-03-22 10:16:20 | 2016-03-22 15:21:21 | 2016-03-22 10:16:20 |
| 1458612980 | 2016-03-22 15:22:17 | 0000-00-00 00:00:00 | 2016-03-22 15:22:17 |
+------------+---------------------+---------------------+---------------------+
2 rows in set (0.00 sec)
优点 显示直观,不需使用函数做转换
 
timestamp:
存储长度: 4字节
是否为空: 允许为空值,但是不可以自定义值,所以为空值时没有任何意义。
表示范围:'1970-01-01 00:00:01'-'2038-01-19 03:14:07
是否为空: 允许为空值,可以自定义值,且insert和update操作不会自动修改其值。
存储格式: 值以UTC格式保存,即以毫秒为单位的数字存储 ( it stores the number of milliseconds)
时区相关: 和时间相关,时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。
默认值 :  可以设置为CURRENT_TIMESTAMP(),当前的系统时间。
gmt_modified timestamp not null default '0000-00-00 00:00:00' on update current_timestamp
字段属性加上 "on update current_timestamp",
1 在更新记录时不指定update timestamp字段的值,数据库会自动修改gmt_modified的值为当前系统的时间,
2 在插入记录时不指定timestamp字段和timestamp字段的值,插入后该字段的值会自动变为当前系统时间。
相比于 init 类型的 可以自动更新为系统当前时间,其他并无优势。
三 总结
 对于如何选型 ,有如下三种层面 性能,存储空间,时间范围 的考虑。这里我从时间范围和存储空间层面推荐使用 int 或者bigint ,datetime 类型。bigint和datetime 占用的空间一样,唯一的差异是在性能上可能存在差异。当然如果你服务的企业有存在  102年的梦想,那我建议直接使用 datetime类型。2038年的时候,虽然我们(80后)估计已经在家养老或者身居高层,为了避免给后来的运维人员留坑,建议不要使用 timestamp 字段。

以上就是MySQL中怎么选择时间类型存储格式,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯