最近在做一个项目 项目中 不同的小伙伴同时在不同的业务模块中用到了date,datetime,timestamp这三个类型 特别是datetime,timestamp这两个 如果不能理解到位  其实很容易滥用 ,相信很多小伙伴也是随意用 反正上线也出不了事。但现在不出事不一定代表未来不会出事 既然存在这两种类型  那想必必然存在差异,笔者接下来根据实际业务场景的不同分析一下 这三种类型的正确使用,也会谈到细微的各自区别。

datet类型最好理解 它支持的格式为“YYYY-MM-DD” 所以如果你的应用 无须精确到秒 最多只需精确到天话是可以使用这个类型的。

就拿笔者最近在做的一个电商项目 有一张网点库存表

这张表的作用是每个销售网点关于共同商品(这张表没有对应商品ID因为笔者做的这个项目商品是固定的由政府统一协调)这张表每天会根据实际情况 每个网点每天上线不同库存数据

那stock_date这个字段就可以设置为date类型了  因为业务场景只要精确到天就行。

那像datetime,timestamp这两个字段  先讲下他们的相同点和不同点

  • 相同点:两者都可用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期
  • 不同点:

    1)对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。

    而对于DATETIME,不做任何改变,基本上是原样输入和输出.

这就有点意思了 timestamp这个字段 通过不同的时区  会自动适应当前市区的值 像笔者只有有一个项目 部署在摩洛哥  但数据库又是共享同一个  如果国内的数据 按照国内的时间生成后  但在摩洛哥显示因为有时间差 显示的内容从那边的角度看是会有歧义的

  2)取值范围

    datetime取值范围:0000-00-00 00:00:00 ~ 9999-12-31 23:59:59;

    timestamp取值范围:1970-01-01 08:00:01!2038-01-19 11:14:07

不过timestamp从取值范围来看 limit居然只能到2038年 也是蛮坑的

最后查看了网上很多资料说timestamp会自更新 我实际在自己的环境试了一下

其实还是跟

`时间字段` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

如果没有ON UPDATE xx信息 就算你update了其他字段 这个字段也不会自动更新值 datetime也是如此 加上 就会自动更新

在客户端比如Navicat 等类似工具上 就是勾选这个

效果 这个时候 就算你没有主动更新这个字段 这个字段还是会实时更新当前值 时候那种update_time  能简单看出某条记录的最晚操作时间在生产环境中

好了 关于这三个字段的比较再结合生产场景就介绍到这里

Mysql 实战关于date,datetime,timestamp类型使用的更多相关文章

  1. 转 数据库中的 date datetime timestamp的区别

    转 数据库中的 date datetime timestamp的区别 DATETIME, DATE和TIMESTAMP类型是相关的.本文描述他们的特征,他们是如何类似的而又不同的. DATETIME类 ...

  2. 简述MySQL数据库中的Date,DateTime,TimeStamp和Time类型

    DATETIME类型 定义同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00' ...

  3. MySQL中DATETIME、DATE和TIMESTAMP类型的区别

    一.TIMESTAMP 显示格式:YYYY-MM-DD HH:MM:SS 时间范围:[ '1970-01-01 00:00:00'到'2037-12-31 23:59:59'] TIMESTAMP D ...

  4. Mysql 5.7 系列命令 timestamp类型的字段不能设默认值为“0000-00-00 00:00:00” 要设为`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新',

    一.show相关命令语句 1.查看表的索引 show index from tbl_name; 1 table:表名 non_unique:索引是非唯一的?.0否,唯一是索引的.1是,是非唯一索引.( ...

  5. oracle数据库的date和timestamp类型

    1.date类型存储数据的格式为年月日时分秒,可以精确到秒 timestamp类型存储数据的格式为年月日时分秒,可以精确到纳秒(9位) 2.date类型 Date类型的数据可以显示到年月日,也可以显示 ...

  6. MySQL中Date,DateTime,TimeStamp和Time的比较

    名称 显示格式 显示范围 应用场景 后台取值 Date YYYY-MM-DD 1601-01-01 到 9999-01-01 当业务需求中只需要精确到天时, 可以用这个时间格式 @JSONField( ...

  7. date,datetime,timestamp 的区别

    date 表示年月日,如YY-MM-DD datetime 表示年月日和时间信息,如YY-MM-DD HH:MM:SS datestamp 和datetime表示的信息相同,但时间范围不同 时间范围 ...

  8. mysql建库DATETIME、DATE 和 TIMESTAMP区别

    http://blog.sina.com.cn/s/blog_5f7b8c2c0100tf6t.html     DATETIME.DATE 和 TIMESTAMP 类型是相似的.本篇描述了它们的特性 ...

  9. MySQL问题记录——定义timestamp类型的数据

    MySQL问题记录——定义timestamp类型的数据 摘要:本文主要记录了在使用MySQL的过程中定义timestamp类型数据时遇到的问题以及解决方案. 问题重现 在Windows环境下安装MyS ...

随机推荐

  1. Spring Boot 自带缓存及结合 Redis 使用

    本文测试环境: Spring Boot 2.1.4.RELEASE + Redis 5.0.4 + CentOS 7 自带缓存 如果没有使用缓存中间件,Spring Boot 会使用默认的缓存,我们只 ...

  2. ccpc赛前记

    距离ccpc比赛还不到一个小时了,有些紧张又有些兴奋 作为留学选手参加国内的比赛感觉好像很奇怪?谁能想到一个疫情会让我拿ccpc结束自己的acm生涯(也许,谁知道呢) cf上蓝了 该准备gre了,目标 ...

  3. kali-网络桥接

    kali 之网络桥接 前言:之前一直选择的是nat模式,不知道我的什么神操作,kali的网络突然就挂掉了,然后就是重启,配置,一直轮训下去,还是ping不通主机,搞得心态差点爆炸,于是乎就放弃了nat ...

  4. Netty源码解析 -- PoolChunk实现原理

    本文主要分享Netty中PoolChunk如何管理内存. 源码分析基于Netty 4.1.52 内存管理算法 首先说明PoolChunk内存组织方式. PoolChunk的内存大小默认是16M,Net ...

  5. springmvc<三> 异常解析链与视图解析链

    1.1.7. Exceptions    - 如果异常被Controller抛出,则DispatchServlet委托异常解析链来处理异常并提供处理方案(通常是一个错误的响应)        spri ...

  6. 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析

    老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...

  7. 半夜删你代码队 Day5冲刺

    一.每日站立式会议 1.站立式会议 成员 昨日完成工作 今日计划工作 遇到的困难 陈惠霖 跟进作业 完成注册界面 相关界面设计内容知识不充足 侯晓龙 开始双人合作 开始与数据库结合 无 周楚池 初步完 ...

  8. cglib、orika、spring等bean copy工具性能测试和原理分析

    简介 在实际项目中,考虑到不同的数据使用者,我们经常要处理 VO.DTO.Entity.DO 等对象的转换,如果手动编写 setter/getter 方法一个个赋值,将非常繁琐且难维护.通常情况下,这 ...

  9. I am zhoukangyang!

    我是 \(\texttt{zhoukangyang}\),一名来自浙江省,杭州市的初二菜鸡 \(\texttt{oier}\) . 洛谷zhoukangyang 很多东西因为太垃圾所以 了,要开 请洛 ...

  10. SNOI2020 部分题解

    D1T1 画图可以发现,多了一条边过后的图是串并联图.(暂时不确定) 然后我们考虑把问题变成,若生成树包含一条边\(e\),则使生成树权值乘上\(a_e\),否则乘上\(b_e\),求最终的生成树权值 ...