迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

MySQL 中的 DATETIME 与 TIMESTAMP 的比较

作者:迹忆客 最近更新:2024/03/25 浏览次数:

DATETIMETIMESTAMP 是两种不同的数据类型,可用于存储必须包含日期和时间部分的值。

在本文中,我们将了解它在数据库中的存储格式以及每种数据类型所需的内存。我们还将查看两种数据类型的异同,并尝试通过示例来理解。


DATETIMETIMESTAMP 的相似之处

DATETIMETIMESTAMP 有一些相似之处,如下所示:

  • 两者都存储相同类型的数据,具有两部分(日期和时间)。
  • 两者在查询时具有相同的格式。
  • 存储在数据库中的格式相同(YYYY-MM-DD hh:mm:ss)。
  • 两者都需要额外的字节来实现小数秒精度。
  • 每当更新记录时,两者都可以使用当前日期和时间更改数据。

DATETIMETIMESTAMP 的区别

DATETIMETIMESTAMP 有以下区别:

  • DATETIMETIMESTAMP 分别需要 5 个字节和 4 个字节。
  • TIMESTAMP 受时区影响,但 DATETIME 保持不变。
  • DATETIMETIMESTAMP 支持的范围是 '1000-01-01 00:00:00''9999-12-31 23:59:59''1970-01-01 00:00:01'UTC'2038-01-19 03:14:07' UTC
  • DATETIME 不能被索引,而 TIMESTAMP 可以。
  • 带有 TIMESTAMP 的查询将被缓存,但 DATETIME 不是这种情况。

了解 MySQL 中 DATETIMETIMESTAMP 使用的示例

假设你在你的国家/地区经营一家咖啡店。每个客户在支付账单后都会收到一张发票​​。

除其他详细信息外,此发票还有日期和时间。由于你仅在你的所有客户都在同一时区的国家/地区经营商店,因此你将使用 DATETIME

让我们稍微改变一下这个场景;你现在在不同的国家有十家咖啡店,每个国家都有自己的时区。客户也会在那里收到发票,但是如何根据客户的时区显示日期和时间。

在这里你将使用 TIMESTAMP。为什么?因为 TIMESTAMP 受时区影响,也就是说 TIMESTAMP 的值会从当前时区(服务器时间)转换为 UTC(通用时区)进行存储,再返回到当前时区(服务器时间) ) 关于检索。

示例代码:

请在你的 MySQL 中运行以下代码(我们在本教程中使用 MySQL 8.0.27)并查看代码后给出的输出。

#create schema
CREATE SCHEMA db_practice_datetime_timestamp;

#create table
CREATE TABLE practice_datetime_and_timestamp (
    ID INT AUTO_INCREMENT PRIMARY KEY,
    DATE_TIME DATETIME,
    TIME_STAMP TIMESTAMP
    );
#insert data   
INSERT INTO practice_datetime_and_timestamp(TIME_STAMP,DATE_TIME)
VALUES(NOW(),NOW());

#read data
SELECT DATE_TIME, TIME_STAMP from practice_datetime_and_timestamp;

输出:

现在,运行下面给出的代码并查看其输出。

SET time_zone = '-05:00';
SELECT DATE_TIME, TIME_STAMP from practice_datetime_and_timestamp;

输出:

你可能已经注意到 TIME_STAMP 列的时间已更改,但 DATE_TIME 的数据保持不变。


结论

在本次讨论中,我们得出结论,DATETIMETIMESTAMP 根据你的需要存储相同的数据。如果你希望你的数据受时区影响,请选择 TIMESTAMP。否则,最好使用 DATETIME

上一篇:在 MYSQL 中的一个查询中执行多个连接

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MYSQL 中的一个查询中执行多个连接

发布时间:2024/03/25 浏览次数:161 分类:MySQL

本教程展示了如何在 MySQL 中的一个查询中合并多个连接;无论是内部的还是外部的。我们还展示了定义连接条件的不同方法。

MySQL 级联删除

发布时间:2024/03/25 浏览次数:114 分类:MySQL

本文介绍 MySQL 中的删除级联

MySQL 中的 rank 函数

发布时间:2024/03/25 浏览次数:156 分类:MySQL

本教程演示了在 MySQL 数据库中使用 rank 函数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便