datetime:

保存格式为YYYYMMDDHHMMSS的整数,与时区无关,存入什么值就是什么值,不会根据当前时区进行转换。mysql5.6.4中可以存储小数片段,最多小数点后6位,在mysql5.5中没有小数片段,精确到秒。存储范围从1000-01-01 00:00:00到9999-12-31 23:59:59。长度8个字节,datetime(n),n不是存储长度,而是小数点位数,即使小数位数是0,存储也是6位小数,仅显示0位而已,n=3毫秒,n=6微妙,默认精确到秒。

timestamp:

存入的是自1970-01-01格林尼治标准时间以来的秒数,与时区有关,查询时转为相应的时区时间。存储范围时1970-01-01 00:00:01到2038-01-19 03:14:07。在数据库用整型的int型存储,int范围时2的32次方减1。长度4个字节,因为存储长度的原因,决定了支持范围比datetime小,默认精确到秒。从5.5就开始有小数片段,最大6位,超过报错,旧版本中代表不同含义,TIMESTAMP(14)代表YYYYMMDDHHMMSS,最常见尺寸6、8、12、14,定义为0或比14大均会被强制定义为列长14,1-13范围的奇数值均被强制为下一个更大的偶数。

date:

1000-01-01到9999-12-31,只有日期部分,没有时间部分。

year:

1901-2155,字节数为1。

给year赋值的3种方法:
1.是直接插入4位字符串或者4位数字,
2.是插入2位字符串,这种情况下如果插入‘00’~‘69’,则相当于插入2000~2069;如果插入‘70’~‘99’,则相当于插入1970~1999。第2种情况下插入的如果是‘0’,则与插入‘00’效果相同,都是表示2000年。
3.是插入2位数字,它与第2种(插入两位字符串)不同之处仅在于:如果插入的是一位数字0,则表示的是0000,而不是2000年。所以在给YEAR类型赋值时,一定要分清0和‘0’,虽然两者相差个引号,但实际效果确实相差了2000年。

time:

-838:59:59到838:59:59,字节数为3。

time类型表示为“时:分:秒”,尽管小时范围一般是0~23,但是为了表示某些特殊时间间隔,MySQL将TIME的小时范围扩发了,而且支持负值。
对time类型赋值,标准格式是‘HH:MM:SS’,但不一定非要是这种格式。
如果插入的是‘D HH:MM:SS’格式,则类似插入了‘(D*24+HH):MM:SS’。比如插入‘2 23:50:50’,相当于插入了‘71:50:50’。
如果插入的是‘HH:MM’或‘SS’格式,则效果是其他未被表示位的值赋为零值。比如插入‘30’,相当于插入了‘00:00:30’;如果插入‘11:25’,相当于插入了‘11:25:00’。
也可以插入‘D HH’和‘D HH:MM’,按上面的例子可以推理出来。
在MySQl中,对于'HHMMSS'格式,系统能够自动转化为标准格式。

性能比较:

对于MyISAM引擎,不建立索引的情况下,效率从高到低unix_timestamp(timestamp)>datetime(直接和时间比较)>timestamp(直接和时间比较)>unix_timestamp(datetime)。

对于MyISAM引擎,建立索引的情况下,效率从高到低unix_timestamp(timestamp)>datetime(直接和时间比较)>timestamp(直接和时间比较)>unix_timestamp(datetime)。

对于InnoDB引擎,不建立索引的情况下,效率从高到低unix_timestamp(timestamp)>datetime(直接和时间比较)>timestamp(直接和时间比较)>unix_timestamp(datetime)。

对于InnoDB引擎,建立索引的情况下,效率从高到低datetime(直接和时间比较)>timestamp(直接和时间比较)>unix_timestamp(timestamp)>unix_timestamp(datetime)。

总结,对于MyISAM引擎,采用unix_timestamp(timestamp)比较,对于InnoDB引擎,采用datetime直接时间比较。

unix_timestamp

返回时间戳,可以是时间类型,可以是字符串,字符串需提供时间表达式。

from_unixtime

把时间戳转为时间格式。可以加上时间格式。

mysql datetime和timestamp区别的更多相关文章

  1. mysql 时间类型datetime与timestamp区别比较

    mysql 时间类型datetime与timestamp区别比较 相同点: 显示宽度和格式相同,显示宽度固定在19字符,格式为YYYY-MM-DD HH:MM:SS. 不同点: (1)时间范围不同: ...

  2. MySQL datetime 和 timestamp 的区别

    [转载]:MySQL中有关TIMESTAMP和DATETIME的总结 1. datetime 和 timestamp 的相同点 两者都可以用来表示YYYY-MM-DD HH:MM:SS[.fracti ...

  3. mysql DATETIME和TIMESTAMP类型

    以mysql 5.7.20 为例 一直以来,理解有偏差,作此记录,纠正 一.DATETIME和TIMESTAMP 都有高达微秒(6位)的精度 范围   DATETIME  1000-01-01 00: ...

  4. mysql中的int和tinyint、varchar和char、DateTime和TimeStamp区别

    一.int和tinyint的区别 大小: tinyint在mysql中占用1个字节 即: 1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方:11111111 = 256 在 ...

  5. Mysql中datetime和timestamp区别

    DATETIME日期和时间的组合.支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'.MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DA ...

  6. mysql datetime与timestamp精确到毫秒的问题

    CREATE TABLE `tab1` (`tab1_id` VARCHAR(11) DEFAULT NULL,`create` TIMESTAMP(3) NULL DEFAULT NULL,`cre ...

  7. Mysql - date、datetime、timestamp 的区别

    date.datetime 的区别 顾名思义,date 日期,datetime 日期时间,所以 date 是 datetime 的日期部分 MySQL 以 YYYY-MM-DD hh:mm:ss 格式 ...

  8. MySQL 时间类型 DATE、DATETIME和TIMESTAMP

    1.DATE.DATETIME和TIMESTAMP 表达的时间范围 Type Range Remark DATE '1000-01-01' to '9999-12-31' 只有日期部分,没有时间部分 ...

  9. MySQL中datetime和timestamp的区别及使用

    MySQL中有关TIMESTAMP和DATETIME的总结 转载自iVictor,原文链接:http://www.cnblogs.com/ivictor/p/5028368.html 一.MySQL中 ...

  10. MySQL 中 datetime 和 timestamp 的区别与选择

    MySQL 中常用的两种时间储存类型分别是datetime和 timestamp.如何在它们之间选择是建表时必要的考虑.下面就谈谈他们的区别和怎么选择. 1 区别 1.1 占用空间 类型 占据字节 表 ...

随机推荐

  1. (0409) Pycharm 的设置--参数设置(运行.py文件带参数,例如argument) 比如: demo.py -prj xxx

    1)  https://www.cnblogs.com/yksgzlyh/p/10221960.html 点击"Run"菜单下的"Edit Configurations. ...

  2. Java06 面向对象

    一 什么是面向对象 面向对象编程(Object-Oriented Programming,OOP) 面向对象编程的本质就是:以类的方式组织代码,以对象组织(封装)数据. 三大特性: 封装 继承 多态 ...

  3. ctfshow web入门 命令执行 web29-36

    29-36 全是基于get传参执行 eval() 函数,均采用黑名单匹配,不同点在于黑名单的变化 web29 1 error_reporting(0); 2 if(isset($_GET['c'])) ...

  4. vue2 安装swiper

    npm install swiper@5.4.5 -D

  5. 掌控安全学院SQL注入靶场-布尔盲注(二)

    首页打开如下 判断注入 闭合报错 先判断数据库的长度....

  6. VsCode——修改左侧目录缩进

    https://code84.com/741691.html https://blog.csdn.net/qq812457115/article/details/124445657

  7. 如何用python脚本采集某网图片

    一.前言: 今天学了两个工具urlopen  和etree,这两个小工具至关重要.urllib.request模块提供了最基本的构造HTTP请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还 ...

  8. centos7上安装使用docker环境

    系统环境准备: docker 运行在centos7上,要去系统为64位.系统内核版本为3.10以上 1.查看系统版本:cat/etc/redhat-release 2.查看系统内核版本:uname - ...

  9. centos7 python2.7.5安装mysqldb

    1.安装pip,下载pip-20.3.1.tar.gz    解压python setup.py install 2.安装setuptools,下载setuptools-43.0.0.zip  解压p ...

  10. Java 日期类 处理

    原始方案:SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD"); //线程不安全类,最好不要用了,替代方案: Date ...