MySql日期类型YEAR、TIME、DATE、DTAETIME、TIMESTAMP

  • 1. MySql日期类型区别
  • 2. YEAR类型
  • 3. TIME 类型
  • 3. DATE 类型
  • 4. DATETIME 类型
  • 5. TIMESTAMP 类型
  • 5.1 TIMESTAMP 概述
  • 5.2 TIMESTAMP 场景


1. MySql日期类型区别

类型名称

大小

格式

范围

用途

YEAR

1

YYYY

1901 ~ 2155

日期值

TIME

3

HH:MM:SS

-838:59:59 ~ 838:59:59

时间值或持续时间

DATE

3

YYYY-MM-DD

1000-01-01 ~ 9999-12-3

年份值

DATETIME

8

YYYY-MM-DD HH:MM:SS

1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

混合日期和时间值

TIMESTAMP

4

YYYY-MM-DD HH:MM:SS

‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC.

混合日期和时间值,时间戳,不同时区计算

2. YEAR类型

YEAR 类型是一个单字节类型,用于表示年,在存储时只需要 1 个字节。可以使用各种格式指定 YEAR。

3. TIME 类型

TIME 类型用于只需要时间信息的值,在存储时需要 3 个字节。格式为 HH:MM:SS。HH 表示小时,MM 表示分钟,SS 表示秒。

3. DATE 类型

DATE 类型用于仅需要日期值时,没有时间部分,在存储时需要 3 个字节。日期格式为 ‘YYYY-MM-DD’,其中 YYYY 表示年,MM 表示月,DD 表示日。

很多人可能会把日期类型的字段的类型设置为 date或者 datetime,
但是这两个类型是无法设置默认值为当前日期的(或者有我不清楚)因为MySQL目前字段的默认值不支持函数

4. DATETIME 类型

DATETIME 类型用于需要同时包含日期和时间信息的值,在存储时需要 8 个字节。日期格式为 ‘YYYY-MM-DD HH:MM:SS’,其中 YYYY 表示年,MM 表示月,DD 表示日,HH 表示小时,MM 表示分钟,SS 表示秒。

5. TIMESTAMP 类型

5.1 TIMESTAMP 概述

TIMESTAMP 的显示格式与 DATETIME 相同,显示宽度固定在 19 个字符,日期格式为 YYYY-MM-DD HH:MM:SS,在存储时需要 4 个字节。但是 TIMESTAMP 列的取值范围小于 DATETIME 的取值范围,为 '1970-01-01 00:00:01’UTC~’2038-01-19 03:14:07’UTC。在插入数据时,要保证在合法的取值范围内。

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

MySql官网说明:https://dev.mysql.com/doc/refman/8.0/en/datetime.html

mysql数据库只存储当天日期 mysql只保存年月_DATE、TIME、YEAR

5.2 TIMESTAMP 场景

因为TIMESTAMP 时间范围最大值只到2038-01-09,所以在创建数据库时间类型的时候需要注意,时间跨度是否符合业务要求,如果不符合就不适用此场景了,TIMESTAMP 本身是为了方便夸时区计算为题的,比如一架飞机,从中国北京起飞,降落在美国纽约,计算它从北京飞往纽约的飞行时间。飞机在北京时间 2021-10-10 11:05:00 从北京起飞,在纽约时间 2021-10-10 09:50:00 降落(JL8006)。
这个场景中,如果使用 TIMESTAMP 来存时间,起飞和降落时间的值,都会被转换成 UTC 时间,所以它们直接相减即可获得结果。但如果使用 DATATIME 格式存时间,还需要进行转换,才可以完成,容易出错。

参考文档
在 MySQL 中 DATETIME 和 TIMESTAMP 时间类型的区别及使用场景 - 实战案例讲解

MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和时间类型)