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

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. MIT线性代数:18.行列式及其特性

  2. Numpy 排序和使用索引

    # 导包 import numpy as np 排序 .sort() x = np.arange(16) # array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...

  3. [考试反思]0921csp-s模拟测试49:困顿

    太弱.还是太弱. 拉不开分差,离第一机房分数线估计还是300多分. 但是,还是要骂:XX出题人. 部分分非常少且没有意义,T1基本只有0/纯暴力20/100三个档, T2正解是n2但是n3一分不给,还 ...

  4. 硬件内存模型到 Java 内存模型,这些硬核知识你知多少?

    Java 内存模型跟上一篇 JVM 内存结构很像,我经常会把他们搞混,但其实它们不是一回事,而且相差还很大的,希望你没它们搞混,特别是在面试的时候,搞混了的话就会答非所问,影响你的面试成绩,当然也许你 ...

  5. sshd服务以及基于口令的远程登陆

    ssh用为客户端,主要进行服务器端的连接:sshd用为服务器端 几个常用的命令: systemctl              ##服务控制命令   systemctl start sshd   ## ...

  6. 用Java实现简单的区块链

    用 Java 实现简单的区块链 1. 概述 本文中,我们将学习区块链技术的基本概念.也将根据概念使用 Java 来实现一个基本的应用程序. 进一步,我们将讨论一些先进的概念以及该技术的实际应用. 2. ...

  7. Linux Shell | 解析xml节点

    01 xml文件 # user.xml <user> <name>Toy</name> <sex>man</sex> <room/&g ...

  8. php微信卡券logo上传方法

    php微信卡券logo上传方法 <pre> $xiangmupath = $this->getxiangmupath(); $logo = $xiangmupath . '/imag ...

  9. html与css连接代码

    demo01.html: <!DOCTYPE html><html> <head>  <meta charset="utf-8">  ...

  10. 012.Kubernetes二进制部署worker节点Flannel

    一 部署flannel 1.1 安装flannel kubernetes 要求集群内各节点(包括 master 节点)能通过 Pod 网段互联互通.flannel 使用 vxlan 技术为各节点创建一 ...