mysql datetime和timestamp区别
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区别的更多相关文章
- mysql 时间类型datetime与timestamp区别比较
mysql 时间类型datetime与timestamp区别比较 相同点: 显示宽度和格式相同,显示宽度固定在19字符,格式为YYYY-MM-DD HH:MM:SS. 不同点: (1)时间范围不同: ...
- MySQL datetime 和 timestamp 的区别
[转载]:MySQL中有关TIMESTAMP和DATETIME的总结 1. datetime 和 timestamp 的相同点 两者都可以用来表示YYYY-MM-DD HH:MM:SS[.fracti ...
- mysql DATETIME和TIMESTAMP类型
以mysql 5.7.20 为例 一直以来,理解有偏差,作此记录,纠正 一.DATETIME和TIMESTAMP 都有高达微秒(6位)的精度 范围 DATETIME 1000-01-01 00: ...
- mysql中的int和tinyint、varchar和char、DateTime和TimeStamp区别
一.int和tinyint的区别 大小: tinyint在mysql中占用1个字节 即: 1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方:11111111 = 256 在 ...
- Mysql中datetime和timestamp区别
DATETIME日期和时间的组合.支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'.MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DA ...
- mysql datetime与timestamp精确到毫秒的问题
CREATE TABLE `tab1` (`tab1_id` VARCHAR(11) DEFAULT NULL,`create` TIMESTAMP(3) NULL DEFAULT NULL,`cre ...
- Mysql - date、datetime、timestamp 的区别
date.datetime 的区别 顾名思义,date 日期,datetime 日期时间,所以 date 是 datetime 的日期部分 MySQL 以 YYYY-MM-DD hh:mm:ss 格式 ...
- MySQL 时间类型 DATE、DATETIME和TIMESTAMP
1.DATE.DATETIME和TIMESTAMP 表达的时间范围 Type Range Remark DATE '1000-01-01' to '9999-12-31' 只有日期部分,没有时间部分 ...
- MySQL中datetime和timestamp的区别及使用
MySQL中有关TIMESTAMP和DATETIME的总结 转载自iVictor,原文链接:http://www.cnblogs.com/ivictor/p/5028368.html 一.MySQL中 ...
- MySQL 中 datetime 和 timestamp 的区别与选择
MySQL 中常用的两种时间储存类型分别是datetime和 timestamp.如何在它们之间选择是建表时必要的考虑.下面就谈谈他们的区别和怎么选择. 1 区别 1.1 占用空间 类型 占据字节 表 ...
随机推荐
- 哲讯科技SAP医疗器械行业ERP解决方案
哲讯科技SAP医疗器械行业ERP解决方案主要体现在以预测为指导,计划为执行的管理理念,完全做到实时的全过程的质量管理和质量跟踪.并且通过灵活的质量管理模块大大降低因实施GMP管理给企业带来的成本压力. ...
- linux下进程和线程的区别和联系
进程用fork()或者vfork()生成(vfork是专门为了加载其他程序的子程序而优化的,随着fork()的优化,vfork已经被优化) fork()生成的子进程与父进程共享代码区内存,对于其他内存 ...
- Java调试排错心得
首先这里没有报错,但是打印了四行相同的数据,还都是最后一行的数据.然后调试了一下 这里是重点: 下面哪里account = {Account@1580}是一直用的一个对象,所有每一次调试那些什么rs. ...
- 如何让公司内网ip映射到公网?
其实这就是端口映射的技术,而端口映射至外网访问2种方法,今天我们来具体谈一谈. 公司内外网互通是网络技术运维人员经常需要面对的问题和需求场景,不管是疫情严重的当下,还是不在公司而又无法快速回公司却又急 ...
- 计算机科学导论-第三版-学习笔记-chapter1-绪论
小测验的网站找不到,小程序也找不到,这两个部分的习题就不做了. Cengage Learning - Foundations of Computer Science这上面有部分答案.这里用斜体标出.我 ...
- python获取当前运行函数名
两种方式: #!/usr/bin/env python3#coding:utf-8 import sys, inspectdef test_a(): print('func name: ', sys. ...
- VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory.
macOS VirtualBox Bridged Adapter 不能用 I'm running macOS High Sierra 10.13.1 and VirtualBox 5.2.2. Thi ...
- 【C++复习】第七章 类的继承(基类、派生类、虚基类)
1.基类与派生类 类的继承:面向对象的程序设计中提供了类的继承机制,允许程序员在保持原有类特性的基础上,进行更具体.更详细的定义 用途:代码的重用性(继承)和可扩充性(派生) 例:植物大战僵尸游戏中, ...
- c语言学习---gets()读取字符串,以及\0,fgets()put()fputs()
#include<stdio.h> //gets()读取字符串, 可以读取空格 int main() { char num[2] = "";//gets 也会造成内存污 ...
- Bug_Android error: duplicate attribute. (错误:重复属性。)
error: duplicate attribute. 错误:重复属性. 如报错信息提示,属性重复赋值了 场景:刚拿到项目源码,进行修改前,先设置它的背景色,区分是哪一块内容,但没看到组件已定义了背景 ...