Administrator
发布于 2025-09-08 / 15 阅读
0
0

MySQL第7课:日期类型详解

日期时间数据类型表

用途:日期时间类型用于存储日期和时间。

日期和时间是一种特殊的字符串。

说明

DATE

YEAR

TIME

DATETIME

TIMESTAMP

用途

存储日期

存储年份

存储字面时间

存储字面日期时间

存储时间戳

格式

'YYYY-MM-DD'

'YYYY'

'HH:MM:SS'

'YYYY-MM-DD HH:MM:SS'

Unix时间戳

示例

'2025-05-09'

'2025'

'10:08:00'

'2025-05-09 10:08:00'

Unix时间戳

时区支持

自动转换时区

自动更新

需手动设置

支持

存储效率

最高

较低

较高

函数

CURRENT_DATE()

NOW()

CURRENT_TIMESTAMP

应用场景

仅需日期(用户注册日期、订单日期、生日、合同开始/结束日期)

仅需年份-员工入职年份、产品发布年份、车辆生产年份

某个时刻或时间间隔

无时区需求的本地化时间,订单创建时间、某个具体时刻

跨时区应用、自动更新时间戳,适合做 “创建时间” 或 “更新时间” 的自动记录字段

取值范围

'1000-01-01' ~ '9999-12-31'

1901 ~ 2155

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

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

'1970-01-01 00:00:01' UTC~'2038-01-19 03:14:07' UTC

注意

支持负数

范围较小,2038年问题,超过这个时间后 TIMESTAMP 会溢出

1. 用户注册信息表 (users)

用户ID(user_id)

用户名(username)

注册时间(register_time)

1

zhangsan

2023-10-01 09:30:15

2

lisi

2023-10-01 14:25:08

3

wangwu

2023-10-02 08:45:33

2. 员工信息表 (employees)

员工ID(emp_id)

员工姓名(emp_name)

出生日期(birth_date)

入职日期(hire_date)

101

张三

1990-05-15

2020-03-01

102

李四

1985-12-20

2018-06-15

103

王五

1995-08-03

2022-01-10

3. 会议日程表 (meetings)

会议ID(meeting_id)

会议名称(meeting_name)

开始时间(start_time)

结束时间(end_time)

1

项目启动会

2023-10-05 09:00:00

2023-10-05 11:00:00

2

技术评审会

2023-10-06 14:30:00

2023-10-06 16:00:00

3

月度总结会

2023-10-10 10:00:00

2023-10-10 12:00:00

4. 新闻文章表 (articles)

说明:国际版

文章ID(article_id)

标题(title)

发布时间(publish_time)

内容(content)

1001

全球气候变化峰会

2023-10-01 08:00:00

气候变化相关报道...

1002

人工智能新突破

2023-10-01 12:30:00

AI技术发展...

1003

国际金融市场动态

2023-10-02 09:15:00

金融市场分析...

5. 考勤打卡记录表 (attendance)

记录ID(record_id)

员工ID(emp_id)

打卡日期(check_date)

上班时间(check_in_time)

下班时间(check_out_time)

1

101

2023-10-01

08:55:00

17:30:00

2

102

2023-10-01

09:05:00

18:15:00

3

103

2023-10-02

08:50:00

17:45:00

6. 促销活动表 (promotions)

活动ID(promo_id)

活动名称(promo_name)

有效年份(valid_year)

开始日期(start_date)

结束日期(end_date)

1

国庆大促销

2023

2023-10-01

2023-10-07

2

双十一预售

2023

2023-10-20

2023-11-11

3

年终清仓

2023

2023-12-01

2023-12-31

7. 历史档案表 (historical_records)

说明:大时间范围

记录ID(record_id)

事件名称(event_name)

事件日期(event_date)

事件描述(description)

1

第一次工业革命

1760-01-01

工业革命开始...

2

第二次世界大战结束

1945-09-02

二战正式结束...

3

互联网诞生

1969-10-29

ARPANET首次连接...

8. 电影放映时间表 (movie_schedules)

排期ID(schedule_id)

电影名称(movie_name)

放映日期(show_date)

放映时间(show_time)

电影时长(duration)

1

流浪地球2

2023-10-05

14:30:00

02:53:00

2

封神第一部

2023-10-05

19:00:00

02:28:00

3

孤注一掷

2023-10-06

16:15:00

02:10:00

练习题答案

1. 用户注册信息表 (users)

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    register_time DATETIME
);
​
INSERT INTO users (user_id, username, register_time) VALUES
(1, 'zhangsan', '2023-10-01 09:30:15'),
(2, 'lisi', '2023-10-01 14:25:08'),
(3, 'wangwu', '2023-10-02 08:45:33');

2. 员工信息表 (employees)

CREATE TABLE employees (
    emp_id INT PRIMARY KEY,
    emp_name VARCHAR(50) NOT NULL,
    birth_date DATE,
    hire_date DATE
);
​
INSERT INTO employees (emp_id, emp_name, birth_date, hire_date) VALUES
(101, '张三', '1990-05-15', '2020-03-01'),
(102, '李四', '1985-12-20', '2018-06-15'),
(103, '王五', '1995-08-03', '2022-01-10');

3. 会议日程表 (meetings)

CREATE TABLE meetings (
    meeting_id INT PRIMARY KEY,
    meeting_name VARCHAR(100) NOT NULL,
    start_time DATETIME,
    end_time DATETIME
);
​
INSERT INTO meetings (meeting_id, meeting_name, start_time, end_time) VALUES
(1, '项目启动会', '2023-10-05 09:00:00', '2023-10-05 11:00:00'),
(2, '技术评审会', '2023-10-06 14:30:00', '2023-10-06 16:00:00'),
(3, '月度总结会', '2023-10-10 10:00:00', '2023-10-10 12:00:00');

4. 新闻文章表 (articles)

CREATE TABLE articles (
    article_id INT PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    publish_time DATETIME,
    content TEXT
);
​
INSERT INTO articles (article_id, title, publish_time, content) VALUES
(1001, '全球气候变化峰会', '2023-10-01 08:00:00', '气候变化相关报道...'),
(1002, '人工智能新突破', '2023-10-01 12:30:00', 'AI技术发展...'),
(1003, '国际金融市场动态', '2023-10-02 09:15:00', '金融市场分析...');

5. 考勤打卡记录表 (attendance)

CREATE TABLE attendance (
    record_id INT PRIMARY KEY,
    emp_id INT,
    check_date DATE,
    check_in_time TIME,
    check_out_time TIME
);
​
INSERT INTO attendance (record_id, emp_id, check_date, check_in_time, check_out_time) VALUES
(1, 101, '2023-10-01', '08:55:00', '17:30:00'),
(2, 102, '2023-10-01', '09:05:00', '18:15:00'),
(3, 103, '2023-10-02', '08:50:00', '17:45:00');

6. 促销活动表 (promotions)

CREATE TABLE promotions (
    promo_id INT PRIMARY KEY,
    promo_name VARCHAR(100) NOT NULL,
    valid_year YEAR,
    start_date DATE,
    end_date DATE
);
​
INSERT INTO promotions (promo_id, promo_name, valid_year, start_date, end_date) VALUES
(1, '国庆大促销', 2023, '2023-10-01', '2023-10-07'),
(2, '双十一预售', 2023, '2023-10-20', '2023-11-11'),
(3, '年终清仓', 2023, '2023-12-01', '2023-12-31');

7. 历史档案表 (historical_records)

CREATE TABLE historical_records (
    record_id INT PRIMARY KEY,
    event_name VARCHAR(200) NOT NULL,
    event_date DATE,
    description TEXT
);
​
INSERT INTO historical_records (record_id, event_name, event_date, description) VALUES
(1, '第一次工业革命', '1760-01-01', '工业革命开始...'),
(2, '第二次世界大战结束', '1945-09-02', '二战正式结束...'),
(3, '互联网诞生', '1969-10-29', 'ARPANET首次连接...');

8. 电影放映时间表 (movie_schedules)

CREATE TABLE movie_schedules (
    schedule_id INT PRIMARY KEY,
    movie_name VARCHAR(100) NOT NULL,
    show_date DATE,
    show_time TIME,
    duration TIME
);
​
INSERT INTO movie_schedules (schedule_id, movie_name, show_date, show_time, duration) VALUES
(1, '流浪地球2', '2023-10-05', '14:30:00', '02:53:00'),
(2, '封神第一部', '2023-10-05', '19:00:00', '02:28:00'),
(3, '孤注一掷', '2023-10-06', '16:15:00', '02:10:00');


评论