几乎每次数据库建模的时候,都会遇到时间类型数据存储的问题。

mysql存储时间通常选择这四种类型:datetime、timestamp、int和bigint四种方式,到底使用什么类型,需要看具体的业务。

我们分别对这四种类型进行讨论。

1、datetime

这个类型可以存储8字节,表示从1000到9999年之间的数据。这个类型可以为空值,也可以自定义值,默认的初始值是“0000-00-00 00:00:00”。

这种类型存储的存储的优点是数据可读性强,不需要函数做转换。

2、timestamp

这个类型的存储长度是4个字节,表示的范围是:'1970-01-01 00:00:01'-'2038-01-19 03:14:07’,可以为空值,也可以自定义值。需要注意的是这个字段创建时如果加上 “on update current_timestamp”时,该字段插入值时,会自动变为当前的系统时间。

3、int

这个类型的存储长度是4字节,一般用来存储linux时间戳的形式,存储精度为秒。表示最大是 date('Y-m-d H:i:s', 4294967295) 最大到 2106-02-07 14:28:15,可以为空值,但是业务逻辑设计时尽量使用非空值。它的优点是数值型存储,节省空间。但是可读性差。另外,如果业务上经常需要按照时间进行排列或者查询的话,尽量使用int类型。

4、bigint

这个类型的存储长度是8个字节,从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。适合业务精确的时间存储,它的存储精度为毫秒。优缺点请参考int。

另外,mysql中的时间存储还有以下类型:

YEAR :字节数为1,取值范围为“1901——2155”。

DATE,字节数为4,取值范围为“1000-01-01——9999-12-31”。

TIME,字节数为3,取值范围为“-838:59:59——838:59:59”。

在实际的数据库建模过程中,用的比较少一些。

综上,我们认为时间的存储需要根据具体的业务场景来定。一般来说,int类型使用较多,一方面查询效率高,另一方面可以显示时间的方式比较灵活,一般语言都提供转化的函数,如大家熟知的php中的date()函数。

mysql那些事(2)时间类型数据如何存储的更多相关文章

  1. MySQL日期数据类型、时间类型使用总结

    MySQL日期数据类型.时间类型使用总结 MySQL日期数据类型.MySQL时间类型使用总结,需要的朋友可以参考下.   MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型    ...

  2. MySQL日期数据类型和时间类型使用总结

    转自: http://blog.chinaunix.net/space.php?uid=11327712&do=blog&id=32416 MySQL 日期类型:日期格式.所占存储空间 ...

  3. Mysql order by 排序 varchar 类型数据

    Mysql order by 排序 varchar 类型数据 varchar 类型字段排序,  会將数字当成字符串来处理.  排序规则一般是从左到右一位位来比较. +0之后 就转化成INT 类型排序 ...

  4. MySQL 中常见的时间类型有三种 DATE, DATETIME 和 TIMESTAMP

    MySQL 中常见的时间类型有三种 DATE, DATETIME 和 TIMESTAMP,其中 DATE 类型用于表示日期,但是不会包含时间,格式为 YYYY-MM-DD,而 DATETIME 和 T ...

  5. MySQL学习记录--生成时间日期数据

    时间数据格式组件: 组件 定义 范围 YYYY 年份,包括世纪 1000~9999 MM 月份 01(January)~12(December) DD 日 01~31 HH 小时 00~23 HHH ...

  6. MySQL学习分享-->日期时间类型

    日期时间类型 ①如果要用来表示年月日时分秒,一般使用datetime类型: ②如果要用来表示年月日,一般使用date类型: ③如果要表示时分秒,一般使用time类型: ④如果只是表示年份,一般使用ye ...

  7. mysql 5.7 laravel json类型数据相关操作

    2018年10月16日18:14:21 官方文档中文翻译版 原文:https://dev.mysql.com/doc/refman/5.7/en/json.html 最后有部分实例和一个小总结 11. ...

  8. MySQL数据类型--日期和时间类型

    MySQL中的多种时间和格式数据类型 日期和时间类型是为了方便在数据库中存储日期和时间而设计的.MySQL中有多种表示日期和时间的数据类型. 其中,year类型表示时间,date类型表示日期,time ...

  9. MySQL的5种时间类型的比较

    日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23 ...

随机推荐

  1. ETCD节点故障恢复

    我在微服务组里面主要负责配置中心的构建,我们的配置中心使用到了ETCD.在我们的内网环境中搭建了三个节点的ETCD,不过这三个节点的ETCD都搭建在同一台机器上.后来机器资源不够了系统直接kill了E ...

  2. MIT线性代数:12.图和网络

  3. 非旋treap (fhq treap) 指针版

    传送门 看了一圈,好像真的没什么用指针的呢.. 明明觉得指针很好看(什么??你说RE???听不见听不见) 其实我觉得用数组的话不RE直接WA调起来不是更困难嘛,毕竟通过gdb还可以知道哪里RE,WA就 ...

  4. Vue项目中执行npm run dev 不报错也不显示点击的地址链接

    问题描述: 输入npm run dev 没有报错也没有显示可以点击的地址链接,如下图: 解决方法: 具体配置: autoOpenBrowser默认为false,改为true.重新 npm run de ...

  5. svg路径蒙版动画

    svg路径蒙版动画,是比较实用的一种动画效果,能够绘制如下图所示的动画. 接下来细说这样的动画是如何做成的: 1.准备工作 2.SVG路径动画 3.SVG路径蒙版动画 4.复杂图形的编辑技巧 1.准备 ...

  6. Python实现自动化监控远程服务器

    最近发现Python课器做很多事情,在监控服务器有其独特的优势,耗费资源少,开发周期短. 首先我们做一个定时或者实时脚本timedtask.py,让其定时监控目标服务器,两种方式: 第一种: #!/u ...

  7. MATLAB基本使用及SIMULINK建模仿真实验

    MATLAB基本使用及SIMULINK建模仿真实验 这是我总结的操作方法: 1 )  M脚本文件的编写 1.新建M-file: 2.输入指令: 3.保存(注意:保存路径需要与工作路径一致) 2 )在S ...

  8. 详解Vue 方法与事件处理器

      本篇文章主要介绍了详解Vue 方法与事件处理器 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 方法与事件处理器 方法处理器 可以用 v-on 指令监听 DOM 事件 ...

  9. Reporting service个人使用经验

    (此文章是从自己写的Word文档里复制过来的,图没有了,文字也有些乱,凑合看吧) 部署环境 Windows server 2012 R2 软件环境 安装完整的sqlsever2012,IIS服务 需要 ...

  10. iOS:应用程序扩展开发之Today扩展(Today Extesnsion)

    一.简介 iOS应用程序扩展是苹果在iOS8推出的一个新特性,可以将自定义的功能和内容扩展到应用程序之外,在之后又经过不断地优化和更新,已经成为开发中不可或缺的功能之一.扩展也是一个Target项目, ...