mysql如何使用datetime

DATETIME用于存储'YYYY-MM-DD HH:MM:SS'格式的日期时间,范围从'1000-01-01 00:00:00'到'9999-12-31 23:59:59';创建表时可用DATETIME定义字段,如event_time DATETIME;插入数据时支持字符串格式或NOW()函数记录当前时间;可使用BETWEEN、比较运算符进行时间查询,也可用DATE()、YEAR()等函数提取部分值;通过DEFAULT CURRENT_TIMESTAMP设置默认创建时间,ON UPDATE CURRENT_TIMESTAMP自动更新修改时间;适用于精确到秒的时间记录,注意与TIMESTAMP的区别,后者支持时区转换但时间范围较小。

在 MySQL 中,DATETIME 是用于存储日期和时间的常用数据类型,格式为 'YYYY-MM-DD HH:MM:SS',支持的时间范围从 '1000-01-01 00:

00:00''9999-12-31 23:59:59'。下面介绍如何在实际中使用 DATETIME 类型。

定义 DATETIME 字段

创建表时,可以直接使用 DATETIME 定义字段:

CREATE TABLE events (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100),
    event_time DATETIME
);

这样 event_time 就可以存储完整的日期和时间信息。

插入 DATETIME 值

插入数据时,可以用字符串格式提供日期时间值:

INSERT INTO events (title, event_time) 
VALUES ('发布会', '2025-04-05 14:30:00');

也可以使用 NOW() 函数插入当前时间:

INSERT INTO events (title, event_time) 
VALUES ('会议记录', NOW());

NOW() 返回当前的日期和时间,适合记录操作时间点。

查询与比较 DATETIME

可以像普通字段一样对 DATETIME 进行查询:

SELECT * FROM events WHERE event_time > '2025-04-05 00:00:00';

查找某个时间段内的记录:

SELECT * FROM events 
WHERE event_time BETWEEN '2025-04-05 00:00:00' AND '2025-04-05 23:59:59';

也可以使用 DATE()、YEAR()、MONTH() 等函数提取部分信息:

SELECT title, DATE(event_time) AS event_date FROM events;

自动设置默认时间和更新时间

如果希望某字段自动记录创建时间或更新时间,可以结合 DEFAULT 和 ON UPDATE 使用:

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

这样 created_at 在插入时自动填充当前时间,updated_at 在每次更新记录时自动刷新。

基本上就这些。DATETIME 使用简单,适合需要精确到秒的时间记录场景。注意不要和 TIMESTAMP 混淆,后者有更小的时间范围,但支持时区转换。根据需求选择合适类型即可。