MySQL 中datatime 与 timestamp区别

在 MySQL 中,DATETIMETIMESTAMP 是两种用于存储日期和时间的数据类型,它们有以下区别:

  1. 存储范围

    • DATETIME:存储的日期和时间范围从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'。
    • TIMESTAMP:存储的日期和时间范围从 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC(32 位系统)或者 '2038-01-19 03:14:07' UTC(64 位系统)。
  2. 存储方式

    • DATETIME:存储的是一个日期和时间,没有时区信息,通常用于存储应用程序中的时间戳,不受时区影响。
    • TIMESTAMP:存储的是一个时间戳,包含时区信息,以 UTC 时间存储,并在检索时转换为当前会话的时区。
  3. 存储空间

    • DATETIME:需要 8 个字节的存储空间。
    • TIMESTAMP:需要 4 个字节或者 8 个字节的存储空间,取决于系统是否使用 32 位或者 64 位存储。
  4. 默认值

    • DATETIME:默认情况下,没有默认值。
    • TIMESTAMP:默认情况下,如果字段定义为 TIMESTAMP 类型且没有指定默认值,则默认值为当前时间。
  5. 自动更新

    • DATETIME:不支持自动更新功能。
    • TIMESTAMP:可以设置自动更新属性,当记录插入或者更新时,TIMESTAMP 字段将自动更新为当前时间。

综上所述,DATETIME 适用于存储应用程序中的日期和时间,而 TIMESTAMP 适用于存储时间戳,并且会受到时区的影响。在选择使用哪种数据类型时,需要考虑存储范围、时区、存储空间和自动更新等因素。

相关推荐
聚美智数27 分钟前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
JavaPub-rodert34 分钟前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
明雨-开发38 分钟前
Android打包时候Execution failed for task ‘:launcher:lintVitalAnalyzeRelease‘.
android
游戏开发爱好者838 分钟前
开心上架是什么,一站式 Apple 开发者工作台总览
android·小程序·https·uni-app·iphone·webview
Android-Flutter1 小时前
android kotlin launch 源码分析
android·kotlin
瀚高PG实验室1 小时前
SQL优化案例:存储过程、复杂SQL拆成简单SQL提升整体性能
数据库·sql·postgresql·瀚高数据库
Wang's Blog1 小时前
PostgreSQL笔记36:执行计划基础解读与优化器成本模型
数据库·笔记·postgresql
Android-Flutter1 小时前
android kotlin 状态机 Continuation 详解
android·kotlin
Wang's Blog1 小时前
PostgreSQL笔记35:索引常见问题诊断与解决方案全景解析
数据库·笔记·postgresql
LayZhangStrive1 小时前
后端通识 - 后端开发职位接触的开发流程
数据库·prd·技术方案·库表设计·后端开发流程