时间戳(timestamp)和 datetime的区别

今天在设计数据库表的时候需要给created_time updated_time 分配数据存储类型

想到存时间戳(timestamp)和 datetime的区别 。

问了一下chat:

请问 timestamp这个从1970年开始的时间戳 和正常使用的 datetime有什么区别吗

在关系数据库中,TIMESTAMPDATETIME 是表示日期和时间的数据类型,它们在功能上有一些区别:

  1. 范围和存储方式

    • DATETIME 数据类型存储范围是 '1000-01-01 00:00:00''9999-12-31 23:59:59'占用 8 字节的存储空间。                                                        
    • TIMESTAMP 数据类型存储范围是 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC,占用 4 字节的存储空间。这个范围受限于 32 位整数的最大值,因此存在所谓的“2038年问题”。

                注:UTC格林威治时间(1)↓↓↓↓↓

  1. 时区处理

    • DATETIME 不会考虑时区,它是存储特定日期和时间的数据类型。
    • TIMESTAMP 存储的是相对于 UTC(协调世界时)的时间戳,并在存储时会将其转换为 UTC,读取时也会根据当前时区进行相应的转换。
  2. 自动更新行为

    • 在 MySQL 中,TIMESTAMP 类型的列可以设置为默认值为 CURRENT_TIMESTAMP,这样当一行数据被创建或更新时,这个字段会自动记录当前的时间戳。而 DATETIME 类型的列需要在插入或更新数据时手动指定值。
  3. 存储空间

    • TIMESTAMP 占用的存储空间更小,因为它只存储了一个时间戳,而不是完整的日期和时间信息。

总的来说,TIMESTAMP 更适合用于记录与时间相关的操作,尤其是需要考虑时区的情况,而 DATETIME 更适合用于存储特定的日期和时间信息,不涉及时区转换。

        为什么会有2038年危机 。

在一般的电脑中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]

无符号整型(unsigned int )占4个字节,范围 0 ~ 4294967295

(1):在19世纪末和20世纪初,国际上为了解决全球航海和铁路运输中出现的时间标准问题,选择了格林威治天文台的子午线作为参考点。1884年,格林威治子午线被选定为国际时间的基准线,也就是世界时(UTC)的起点。这条子午线穿过伦敦郊区的格林威治天文台。

协调世界时(UTC)是世界上的标准时间。它是基于原子钟的时间,被视为全球的时间标准,不受任何地区或国家的影响。UTC 不受太阳时间、地球自转等因素影响,是一种由国际原子时(TAI)通过精确的原子钟测量得出的时间标准。

        为什么是1970年?        

因为Unix 操作系统 在1969年开始被开发,在1971年正式被发表,所以最初规定的时间戳是从 1971 年1月1日 00:00:00开始,但是后来为了方便计算就取了个整数,就改到了1970年

相关推荐

  1. timestampdatetime区别

    2023-12-23 20:18:01       13 阅读
  2. Mysql timestampdatetime区别

    2023-12-23 20:18:01       30 阅读
  3. mysqlDATETIMETIMESTAMP数据类型有什么区别

    2023-12-23 20:18:01       45 阅读
  4. MSQL中DATETIMETIMESTAMP区别

    2023-12-23 20:18:01       20 阅读
  5. 浅谈 Unix Timestamp 时间

    2023-12-23 20:18:01       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-23 20:18:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-23 20:18:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-23 20:18:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-23 20:18:01       20 阅读

热门阅读

  1. LeetCode 1671. 得到山形数组的最少删除次数

    2023-12-23 20:18:01       48 阅读
  2. 5-Docker实例-安装php

    2023-12-23 20:18:01       42 阅读
  3. npm的介绍和使用

    2023-12-23 20:18:01       33 阅读
  4. Linux根目录下默认目录作用

    2023-12-23 20:18:01       41 阅读
  5. 事件相机角点检测:从原理到演示编程

    2023-12-23 20:18:01       40 阅读
  6. UDP Ping程序实现--第2关:接收并转发消息

    2023-12-23 20:18:01       42 阅读