MySQL有哪些表示日期的数据类型 各自适用场景是什么

来源:站长查询作者:北京网站建设头衔:草根站长
导读:本期聚焦于小伙伴创作的《MySQL有哪些表示日期的数据类型 各自适用场景是什么》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《MySQL有哪些表示日期的数据类型 各自适用场景是什么》有用,将其分享出去将是对创作者最好的鼓励。

MySQL中提供了多种用于表示日期和时间的数据类型,不同数据类型在存储能力、精度、时区支持等方面各有特点,开发者需要根据业务场景选择合适的类型,避免存储浪费或者功能缺失。

MySQL有哪些表示日期的数据类型 各自适用场景是什么

MySQL常见日期数据类型介绍

DATE类型

DATE类型仅用于存储日期信息,不包含具体的时间部分,格式为YYYY-MM-DD。它的取值范围是1000-01-01到9999-12-31,占用3个字节的存储空间。

这种类型适合只需要记录日期不需要时间的场景,比如用户的出生日期、订单的签约日期、活动的开始日期等。

TIME类型

TIME类型用于存储时间信息,不包含日期部分,格式为HH:MM:SS,取值范围是-838:59:59到838:59:59,占用3个字节。它不仅可以表示一天内的时间,还可以表示两个时间点之间的时间间隔。

适用场景比如记录课程的上课时长、员工的打卡工时、任务的耗时等。

DATETIME类型

DATETIME类型同时存储日期和时间信息,格式为YYYY-MM-DD HH:MM:SS,取值范围是1000-01-01 00:00:00到9999-12-31 23:59:59,占用8个字节的存储空间。它不依赖时区设置,存储的是输入时的具体日期时间值。

适合需要同时记录日期和时间的场景,且不需要时区转换,比如业务操作的具体发生时间、日志记录的时间戳等。

TIMESTAMP类型

TIMESTAMP类型同样存储日期和时间,格式和DATETIME一致,但取值范围更小,是1970-01-01 00:00:00 UTC到2038-01-19 03:14:07 UTC,占用4个字节。它会受时区影响,存储时会被转换为UTC时间,查询时再转换回当前会话的时区。

适合需要跨时区展示时间的场景,比如国际化系统的操作记录时间,同时它支持自动初始化和自动更新,常被用来作为记录的创建时间和更新时间。

YEAR类型

YEAR类型仅存储年份信息,格式为YYYY,取值范围是1901到2155,以及0000,占用1个字节的存储空间。它可以用2位或者4位数字格式输入,2位输入时00-69会被转换为2000-2069,70-99会被转换为1970-1999。

适用场景比如记录产品的生产年份、学生的入学年份等只需要年份信息的场景。

不同类型对比

为了更清晰地对比各类型的差异,整理如下表格:

数据类型存储格式取值范围存储空间是否受时区影响
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-313字节
TIMEHH:MM:SS-838:59:59 ~ 838:59:593字节
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:598字节
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:00 UTC ~ 2038-01-19 03:14:07 UTC4字节
YEARYYYY1901 ~ 2155, 00001字节

使用示例

下面通过一个简单的表创建示例展示各类日期类型的使用:

-- 创建测试表,包含各类日期类型字段
CREATE TABLE test_date_type (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_birth DATE COMMENT '用户出生日期,使用DATE类型',
    course_duration TIME COMMENT '课程时长,使用TIME类型',
    order_time DATETIME COMMENT '订单创建时间,使用DATETIME类型',
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间,使用TIMESTAMP自动初始化',
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间,使用TIMESTAMP自动更新',
    product_year YEAR COMMENT '产品生产年份,使用YEAR类型'
);

-- 插入测试数据
INSERT INTO test_date_type (user_birth, course_duration, order_time, product_year)
VALUES ('1995-08-15', '02:30:00', '2024-05-20 14:30:00', 2023);

选型建议

  • 只需要日期信息优先选择DATE类型,存储占用小且语义明确
  • 只需要时间信息优先选择TIME类型
  • 需要同时记录日期时间且不需要时区转换,选择DATETIME类型
  • 需要跨时区展示时间,或者需要自动记录创建、更新时间,选择TIMESTAMP类型,注意它的取值范围限制
  • 只需要年份信息选择YEAR类型,避免存储冗余信息

MySQL日期数据类型DATEDATETIMETIMESTAMP修改时间:2026-07-01 05:06:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。