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. ES-分页查询

    从一个分页问题开始 做分页查询,当分页达到一定量的时候,报如下错误 Result window is too large, from + size must be less than or equal ...

  2. (0321) 路科 视频 ,讲 uvm_pkg

    loading

  3. CH583 是集成 BLE 无线通讯的 RISC-V MCU 微控制器

    CH583 是集成 BLE 无线通讯的 RISC-V MCU 微控制器.片上集成 2Mbps 低功耗蓝牙 BLE 通讯模块.2 个全速 USB 主机和设备控制器及收发器.2 个 SPI.4 个串口.1 ...

  4. django 安装cerlery error in anyjson setup command: use_2to3 is invalid.

    直接报错 error in anyjson setup command: use_2to3 is invalid. setuptools pip install "setuptools< ...

  5. go 标准输入输出

    使用 bufio 处理带有空格分隔的不定长字符串 func main() { scanner := bufio.NewScanner(os.Stdin) for i := 0; i < 2; i ...

  6. Visusl Studio使用技巧

    一.快捷键的使用 1.使用Ctrl+K,Ctrl+E,可以清理代码,包括清理无用的using和对齐代码: 也可以使用快捷按钮实现该功能,如下图: 2.使用Ctrl+K,Ctrl+D,可以对齐代码 建议 ...

  7. a菜单点击标红,其他标黑代码

    <script> let aList = document.querySelectorAll('a'); console.log(aList); for (let index = 0; i ...

  8. 日常开发记录-Object函数的内置方法Object.entries

    方法1: const data = { id: 1, name: "张三", age: 22 } let params = "" /* Object.entri ...

  9. 总结ref和out的区别

    之前每次遇到ref和out时,老是忘记他们的使用方法和区别.每次都要网上搜一下别人写的博客来回忆.这次干脆自己整合一下别人博客的内容,方便下次忘记时查询. 用途: 在C#中通过使用方法来获取返回值时, ...

  10. 线上服务Java进程假死快速排查、分析

    引用 https://zhuanlan.zhihu.com/p/529350757 最近我们有一台服务器上的Java进程总是在运行个两三天后就无法响应请求了,具体现象如下: 请求业务返回状态码502, ...