• Mysql date、datetime、timestamp 的区别


    date、datetime 的区别

    • 顾名思义,date 日期,datetime 日期时间,所以 date 是 datetime 的日期部分
    • MySQL 以 YYYY-MM-DD hh:mm:ss 格式检索和显示 datetime 值

    datetime 支持的日期时间范围

    1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

    datetime 和 timestamp 的区别一:时间范围

    • 它们都是以 YYYY-MM-DD hh:mm:ss 格式检索和显示日期时间
    • 第一个区别是 timestamp 支持的日期时间范围不如 datetime 大

    timestamp 支持的日期时间范围

    是 UTC 时间

    '1970-01-01 00:00:01' UTC  - '2038-01-19 03:14:07' UTC

    什么是 UTC 

    协调世界时间,世界统一时间,世界标准时间,国际协调时间

    datetime 或 timestamp 值可以包括尾部小数秒部分

    • 精度最高可达微秒(6 位小数位)
    • 插入到 datetime 或 timestamp 列的值中的任何小数部分都会被保留而不是被丢弃
    • 保留小数部分后,格式变成 YYYY-MM-DD hh:mm:ss[.fraction] 

    datetime 值的范围变成

    1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999

    timestamp 值的范围变成

    1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.999999

    datetime 和 timestamp 区别二:时区

    • 因为 timestamp 存储的是 UTC 时间,所以会时区的概念,这也是区别于 datetime 地方之一
    • MySQL 对于 timestamp 字段值,会将客户端插入的时间从当前时区转换为 UTC 再进行存储;查询时,会从 UTC 转换回客户端当前时区再进行返回
    • 默认情况下,每个连接的当前时区是服务器的时间
    • 可以在每个连接的基础上设置时区,只要时区设置保持不变,该 timestamp 字段读写的值就会保持一致

    和 datetime 的区别

    datetime 没有时区概念,客户端传什么时间就存什么时间,省去了转换时区的步骤

    datetime 和 timestamp 区别三:字节数

    datetime 和 timestamp 存储的都是二进制而不是字符串

    • timestamp:4 个字节
    • datetime:5 个字节(有些教程会写 8 个,但官方文档目前 mysql8  中 datetime 是 5 个字节进行存储) 

    重点

    • 它们在保存小数秒时,都将使用额外的空间(1-3 个字节)
    • 如果存储 150w 条记录,1 个字节的差异可以忽略不计
    • 150 万条记录 * 每条记录 1 个额外字节/(1048576 字节/MB)= 1.43 MB

    timestamp 节省一个字节是有代价的

    • 最开始也说了,timestamp 只能存储 '1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999' 的值
    • 但 datetime 可以存储 '1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999' 的任何值
  • 相关阅读:
    python学习笔记(29)-操作excel
    python学习笔记(28)-unittest单元测试-执行用例
    python学习笔记(27)-unittest单元测试-测试用例
    python学习笔记(26)-request模块
    python学习笔记(25)-继承
    c++ 流基本概念
    友元函数、类和运算符重载
    c++中的引用
    c++重点知识点
    指针和结构体
  • 原文地址:https://www.cnblogs.com/poloyy/p/15546735.html
Copyright © 2020-2023  润新知