关键词

MySQL存储时间类型选择的问题讲解

MySQL存储时间类型选择的问题讲解

MySQL中有多种时间类型可供选择,如DATE、TIME、DATETIME、TIMESTAMP等,如何选择合适的时间类型存储数据是一个需要仔细考虑的问题。

DATE类型

DATE类型用于存储日期数据,精度为年、月、日。一般适用于仅关心日期信息的情况下,如生日、入职日期等。其存储格式为YYYY-MM-DD。下面是一个例子:

CREATE TABLE table_name (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    birthday DATE
);

TIME类型

TIME类型用于存储时间数据,精度为时、分、秒。一般适用于仅关心时间信息的情况下,如开门时间、关闭时间等。其存储格式为HH:mm:ss。下面是一个例子:

CREATE TABLE table_name (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    open_time TIME
);

DATETIME类型

DATETIME类型用于存储日期和时间数据,精度为年、月、日、时、分、秒。一般适用于需要同时关注日期和时间信息的情况下,如订单创建时间、会议开始时间等。其存储格式为YYYY-MM-DD HH:MM:SS。下面是一个例子:

CREATE TABLE table_name (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    order_time DATETIME
);

TIMESTAMP类型

TIMESTAMP类型用于存储日期和时间数据,精度同DATETIME类型。与DATETIME类型不同的是,TIMESTAMP类型是自动初始化、自动更新的,一般适用于需要记录数据修改时间的情况下,如文章发布时间、用户登录时间等。其存储格式与DATETIME类型相同。下面是一个例子:

CREATE TABLE table_name (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

实验验证

下面通过两个例子验证不同时间类型在MySQL中的存储方式。

假设有一个用户表,需要记录用户的基本信息和创建时间。

若使用DATETIME类型,可以创建如下表:

CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    create_time DATETIME
);

则可以插入数据:

INSERT INTO user (name, create_time) VALUES ('张三', '2022-07-01 12:30:00');

查询数据:

SELECT * FROM user;

结果如下:

+----+--------+---------------------+
| id |  name  |     create_time      |
+----+--------+---------------------+
|  1 | 张三   | 2022-07-01 12:30:00 |
+----+--------+---------------------+

若使用TIMESTAMP类型,可以创建如下表:

CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

则可以插入数据:

INSERT INTO user (name) VALUES ('李四');

查询数据:

SELECT * FROM user;

结果如下:

+----+--------+---------------------+
| id |  name  |     create_time      |
+----+--------+---------------------+
|  1 | 李四   | 2022-07-01 12:54:00 |
+----+--------+---------------------+

修改数据:

UPDATE user SET name = '王五' WHERE id = 1;

查询数据:

SELECT * FROM user;

结果如下:

+----+--------+---------------------+
| id |  name  |     create_time      |
+----+--------+---------------------+
|  1 | 王五   | 2022-07-01 12:55:00 |
+----+--------+---------------------+

由此可以看出,使用TIMESTAMP类型存储的数据会自动更新修改时间。

本文链接:http://task.lmcjl.com/news/14146.html

展开阅读全文