社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL 中 DATETIME 和 TIMESTAMP 有什么区别?

程序员鱼皮 • 7 月前 • 246 次点击  

分享一道经典面试题~

此答案节选自鸭鸭最近弄的面试鸭小程序,更多大厂常问面试题,可以点击下面的小程序进行阅读哈!

盘点不同点

虽然它们都是时间字段类型,但是在存储格式、范围、时区处理和默认值等方面有所不同!

存储格式不同

DATETIME 存储的是具体的日期和时间,格式为 YYYY-MM-DD HH:MM:SS。它不依赖于时区信息,存储的是原始时间数据

TIMESTAMP 存储的是自 1970-01-01 00:00:01 UTC 以来的秒数,格式为 YYYY-MM-DD HH:MM:SS。它依赖于时区信息,存储的是 UTC 时间

时间范围不同

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 年后就存不下咯。

时区处理不同

DATETIME 不考虑时区,它存储的是输入的日期和时间值,不进行任何时区转换。

TIMESTAMP 考虑时区,它存储的是 UTC 时间,插入和检索时会根据当前时区进行转换。这意味着在不同的时区中,TIMESTAMP 类型的数据会自动调整以显示本地时间。

默认值和自动更新不同

在 MySQL 5.6 及更早版本中,DATETIME 列不能有自动更新的默认值。

在 MySQL 5.6 及以后版本中,可以使用 DEFAULT 和 ON UPDATE 子句来指定自动初始化和更新行为,但不像 TIMESTAMP 那么直观。

在 MySQL 5.6 及更高版本中,TIMESTAMP 列可以有默认的当前时间戳 CURRENT_TIMESTAMP,并且可以使用 ON UPDATE CURRENT_TIMESTAMP 使其在行更新时自动更新为当前时间戳。

这使得 TIMESTAMP 非常适合记录行的创建和修改时间。

最后

最后再推荐下鸭鸭目前努力在做面试小程序神器,已经有近 1500 道面试题目啦。

欢迎大家体验!如果大家有不会的面试题,也可以在小程序内反馈!鸭鸭会第一时间为大家解答!

我是鸭鸭,我们下期见~

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/172182
 
246 次点击