全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 6 分钟 ✍️ juanwangdev

MySQL 日期和时间类型

MySQL 提供多种日期时间类型,用于存储时间数据并支持时区处理和自动更新。

类型对照表

类型格式范围字节
DATEYYYY-MM-DD1000-01-01 ~ 9999-12-313
TIMEHH:MM:SS-838:59:59 ~ 838:59:593
DATETIMEYYYY-MM-DD HH:MM:SS1000 ~ 99998
TIMESTAMPYYYY-MM-DD HH:MM:SS1970 ~ 20384
YEARYYYY1901 ~ 21551

基本使用

SQL
-- 创建带时间字段的表
CREATE TABLE events (
    id INT PRIMARY KEY,
    event_date DATE,
    event_time TIME,
    created_at DATETIME
);

-- 插入数据
INSERT INTO events VALUES
(1, '2024-01-15', '14:30:00', '2024-01-15 14:30:00');

-- 使用函数获取当前时间
INSERT INTO events VALUES
(2, CURDATE(), CURTIME(), NOW());

TIMESTAMP 自动更新

SQL
-- TIMESTAMP 可自动更新为当前时间
CREATE TABLE logs (
    id INT PRIMARY KEY,
    content VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

INSERT INTO logs (id, content) VALUES (1, '初始内容');
-- created_at 和 updated_at 自动设为当前时间

UPDATE logs SET content = '更新内容' WHERE id = 1;
-- updated_at 自动更新

DATETIME vs TIMESTAMP

SQL
-- DATETIME: 8字节,不受时区影响
-- TIMESTAMP: 4字节,受时区影响,范围小

SET time_zone = '+08:00';
INSERT INTO test (ts, dt) VALUES (NOW(), NOW());

SET time_zone = '+00:00';
SELECT * FROM test;  -- TIMESTAMP 显示会变化

TIMESTAMP 范围仅到2038年,超过此范围用 DATETIME。

要点总结

  • DATE 只存日期,TIME 只存时间,DATETIME 存日期时间
  • TIMESTAMP 自动时区转换,范围到2038年
  • 常用 DEFAULT CURRENT_TIMESTAMP 自动填充创建时间
  • ON UPDATE CURRENT_TIMESTAMP 实现自动更新时间

📝 发现内容有误?点击此处直接编辑

← 上一篇 MySQL 整数类型
下一篇 → MySQL 枚举与集合类型
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库