mysql不同种类时间字段的区别

MySQL所有的时间字段

date
time
datetime
timestamp
year

我们一个一个说

测试SQL表

CREATE TABLE `mysql_time_test` (
  `id` int NOT NULL AUTO_INCREMENT,
  `date_test` date DEFAULT NULL,
  `time_test` time DEFAULT NULL,
  `datetime_test` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `timestamp_test` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `year_test` year DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin;

date

MySQL的date类型的默认格式是yyyy-mm-dd

insert into mysql_time_test(date_test) VALUES(curdate());

在这里插入图片描述
在这里插入图片描述

在 MySQL 8 中,时间类型字段用于存储日期和时间信息,主要包括 DATETIMEDATETIMETIMESTAMPYEAR。以下是它们的详细区别及原理:

1. DATE

  • 格式: YYYY-MM-DD
  • 范围: 1000-01-019999-12-31
  • 存储空间: 3 字节
  • 用途: 仅存储日期,不包含时间部分。
  • 原理: 存储从 1000-01-019999-12-31 的日期,精确到天。

2. TIME

  • 格式: HH:MM:SSHHH:MM:SS
  • 范围: -838:59:59838:59:59
  • 存储空间: 3 字节
  • 用途: 存储时间或时间间隔,可以超过 24 小时。
  • 原理: 存储时间值,支持负值表示时间间隔。

3. DATETIME

  • 格式: YYYY-MM-DD HH:MM:SS
  • 范围: 1000-01-01 00:00:009999-12-31 23:59:59
  • 存储空间: 5 字节(MySQL 5.6.4 之前为 8 字节)
  • 用途: 存储日期和时间,不依赖时区。
  • 原理: 存储从 1000-01-01 00:00:009999-12-31 23:59:59 的日期和时间,精确到秒。

4. TIMESTAMP

  • 格式: YYYY-MM-DD HH:MM:SS
  • 范围: 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC
  • 存储空间: 4 字节
  • 用途: 存储日期和时间,依赖时区,通常用于记录时间戳。
  • 原理: 存储从 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC 的时间戳,精确到秒。存储时转换为 UTC,检索时再转换回当前时区。

5. YEAR

  • 格式: YYYY
  • 范围: 19012155,或 0000(表示无效年份)
  • 存储空间: 1 字节
  • 用途: 存储年份。
  • 原理: 存储 2 位或 4 位年份,4 位年份范围为 19012155,2 位年份范围为 7069(表示 19702069)。

区别总结

  • 范围: DATEDATETIME 的范围较大,TIMESTAMP 的范围较小。
  • 时区: TIMESTAMP 依赖时区,DATETIME 不依赖。
  • 存储空间: TIMESTAMP 占用空间最小,DATETIME 占用空间较大。
  • 用途: DATE 用于日期,TIME 用于时间或间隔,DATETIMETIMESTAMP 用于日期和时间,YEAR 用于年份。

选择建议

  • 如果需要存储时间戳且依赖时区,选择 TIMESTAMP
  • 如果需要存储日期和时间且不依赖时区,选择 DATETIME
  • 如果仅需存储日期,选择 DATE
  • 如果仅需存储时间或时间间隔,选择 TIME
  • 如果仅需存储年份,选择 YEAR

这些时间类型的选择应根据具体需求来决定,以确保数据的准确性和存储效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值