前言

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME、YEAR
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

时间类型

类型 大小(bytes) 范围 格式 小数点精度支持 用途
YEAR 1 1901/2155 YYYY 0 年份值
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 0 日期值
TIME 3 ‘-838:59:59’/‘838:59:59’ HH:MM:SS [0,6] 时间值或持续时间
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS [0,6] 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS [0,6] 混合日期和时间值,时间戳

精度处理

时间精度定义

定义支持小数点精度的长度为6位(最大支持6位精度)

CREATE TABLE `test` (`date` date DEFAULT NULL,`datetime` datetime(6) DEFAULT NULL,`timestamp` timestamp(6) NULL DEFAULT NULL,`time` time(6) DEFAULT NULL,`year` year(4) DEFAULT NULL
)

时间精度插入

  • 插入2位,小于定义的6位,默认对缺失位补零
    INSERT INTO test (DATETIME) VALUES (‘2021-04-01 10:10:10.12’)
  • 插入6位,等于定义的6位,插入正常
    INSERT INTO test (DATETIME) VALUES (‘2021-04-01 10:10:10.123456’)
  • 插入9位,大于定义的6位,插入异常
    INSERT INTO test (DATETIME) VALUES (‘2021-04-01 10:10:10.123456789’)

当插入时间精度时,可以按照设定的精度进行插入,不要超过精度设置否则会出现异常问题,或者可以直接使用mysql函数now()配合精度来获取时间,如now(6)

总结

  • time、datetime、timestamp都支持小数点0~6的精度,year、date记录的是年份、年月日,因此不支持小数点时间精度
  • datetime、timestamp都可以用来记录年月日时分秒,也支持最大6位的小数点精度,但是timestamp占用4字节存储范围较小,从系统长久使用、健壮性以及后续维护成本来说不建议使用该类型来记录时间,datetime占用8字节存储范围较大,一般我们采用datetime来进行时间数据存储,能满足大部分业务场景对时间范围、精度的最大要求

参考

MySQL TIMESTAMP 时间精度问题
MySQL Date and Time Data Type Representation
MySQL 数据类型

MySQL中date、datetime、timestamp、time、year的区别相关推荐

  1. setTimeStamp()与setDate()区别 如何将java中Date存入mysql中的datetime中,字符串怎么转换为日期类型

    数据库 1.java.sql.Date 与 java.util.Date java.sql.Date是从java.util.Date中继承而来 假设 dates1(java.sql.Date)要赋值给 ...

  2. mysql 时间类型 datetime,timestamp

    2019独角兽企业重金招聘Python工程师标准>>> CURRENT_TIMESTAMP 的 timestamp 意思是 根据 mysql 的当前时间,使用mysql 的当前时间. ...

  3. php 时间戳存储 原因,将php文件中的unix时间戳存储到mysql中(store unix timestamp from php file into mysql)...

    将php文件中的unix时间戳存储到mysql中(store unix timestamp from php file into mysql) 现在我有这个代码: $mysqldate = date( ...

  4. php普通索引和唯一索引,MySQL中普通索引和唯一索引的区别详解

    本篇文章介绍了MySQL中普通索引和唯一索引的区别,讲解很详细,希望对学习MySQL的朋友有帮助! 需要注意的是: redo log中的数据,可能还没有 flush 到磁盘,磁盘中的 Page 1 和 ...

  5. MySQL中索引与视图的用法与区别详解

    索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴, ...

  6. MySQL+create+base,MySQL中CREATE DATABASE和CREATE SCHEMA的区别

    MySQL中CREATE DATABASE和CREATE SCHEMA的区别 create schema 是创建模式 create database 是创建数据库 但进入MySQL不用选择任何数据库即 ...

  7. mysql中 REPLACE INTO 和 INSERT INTO 的区别

    mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...

  8. mysql中的where和having子句的区别

    mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...

  9. MySQL中char,varchar和text的区别

    MySQL中char,varchar和text的区别 java程序中的string类型,在mysql数据表中可以有三种对应的类型:char,varchar和text. char,varchar和tex ...

  10. mysql publishedtime_MySQL数据库中的Date,DateTime,TimeStamp和Time类型

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

最新文章

  1. SQL Server-聚焦什么时候用OPTION(COMPILE)呢?
  2. mysql嵌套实战_艰难的mysql嵌套表结果挑战
  3. 魔兽最多人的服务器,魔兽怀旧服:70级热门服务器人口一览!这4大服最值得建号投入!...
  4. MySQL社区版的下载和安装
  5. 漂亮图片演示ajax制作教程-lightbox
  6. Ansible 之 用户管理
  7. 远程计算机没反映6678,6678 PCIe 与FPGA LINK UP 后 不能获得FPGA的DEVICE_ID和VENDDR_ID
  8. UEFI.源码分析.DXE的异步事件服务.第一部分.事件驱动
  9. ExtJS4 时间在edge中显示为0NaN-NaN-NaN NaN:NaN
  10. prisma 连接不上Postgres
  11. 【亚马逊】AWS re:Invent 2022 创新不平衡
  12. 云服务器一键搭建脚本
  13. 服务器主机玩游戏性能如何,用服务器主机玩游戏怎么样
  14. python3--opencc安装方式
  15. 【NFS共享存储服务】
  16. 全球及中国包装产业需求规模与投资发展策略研究报告2022版
  17. hdfs文件误删恢复
  18. 男子在网吧蜗居4年半 曾647分考上大学 IS2120@BG57IV3
  19. 無名の主页个人主页html源码(附源码)
  20. 阿里巴巴集团增持阿里影业股权完成交割

热门文章

  1. 上海财经计算机专业考研,考研择校:魔都的复旦、同济、上财哪个更有前途?看网友怎么说!...
  2. C++的异常(转载 )
  3. switch怎么切换服务器账号,怎么查看switch账号所属服务器
  4. Android 编译之make基础(转)
  5. Linux 服务器配置使用密钥登录教程
  6. 计算机窗口弹出多个窗口,电脑怎么打开多个微信窗口
  7. RHadoop实验 – 统计邮箱出现次数
  8. 华为畅享10与10s有什么区别?哪个更好
  9. 70个经典的 Shell 脚本
  10. ZYNQ学习之路19.在SDx中使用xfOpenCV图像加速处理