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. ArrayList学习笔记

    目录 1.继承关系 1.1.Serializable 标记性接口 1.2.Cloneable 标记性接口 1.3.RandomAccess 标记性接口 2.属性 3.构造方法 3.1.无参构造方法-A ...

  2. Vue 事件监听

    事件监听 v-on 使用v-on进行事件绑定监听,回调函数写在methods中.可以使用@的这种简写形式来代替v-on,当事件源无参数传递时,可省略括号. 语法如下所示: <button @:事 ...

  3. JAVA学习笔记-09

    多线程: 进程:就是正在执行中的程序,每一个进程执行都有一个执行的顺序,该顺序是一个执行路径.或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元,线程在控制着进程的执行 一个进程中至少有一个线 ...

  4. Mybatis插件-分批次插入数据

    背景 有时候使用insert into xxx values (),()语句插入大量数据时,会使得SQL语句超长,为了解决这个问题,在Mybatis中编写一个分批次插入的插件. 实现 package ...

  5. 学习-Vue2-Vue实例-数据与方法-Object.freeze()

    Object.freeze(),会阻止修改现有的property,意味着响应系统无法再追踪变化 代码示例: <!DOCTYPE html> <html lang="en&q ...

  6. ARM-THUMB procedure call standard(ATPCS是ARM-Thumb过程调用标准的简称)

    为了使单独编译的c语言和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则.ATPCS就是ARM程序和Thumb程序中子程序的基本规则. 基本ATPCS规定了在子程序调用时的一些基本规则, ...

  7. 微信小程序JS遇到【object object 】怎么打印?js如何打印object对象

    console.log(JSON.stringify(user)):或者打印的时候直接 console.log(user):不要出现'""'+这些符号

  8. pycharm永久激活码(亲测好用)

    引用自某不知名大佬,在此致谢,获取激活码链接如下: https://www.ajihuo.com/pycharm/4197.html

  9. spring security 基于角色的控制,可运行。

    基于角色的访问控制 建表语句,见 上一篇 的博文,  https://www.cnblogs.com/sdgtxuyong/p/16157870.html 在配置类中,@EnableGlobalMet ...

  10. select标签如何实现 每个option传递多个值

    设计项目时 我们有时候会利用 <select>  <option  value="值1" > </option>  </select> ...