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

1. MySql日期类型区别

类型名称大小格式范围用途
YEAR1YYYY1901 ~ 2155日期值
TIME3HH:MM:SS-838:59:59 ~ 838:59:59时间值或持续时间
DATE3YYYY-MM-DD1000-01-01 ~ 9999-12-3年份值
DATETIME8YYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59混合日期和时间值
TIMESTAMP4YYYY-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
在这里插入图片描述

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(日期和时间类型)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值