MySQL 获取时间
在进行数据库开发和管理的过程中,经常需要对数据库中的时间进行操作和管理。MySQL 提供了多种方式来获取和操作时间,本文将详细介绍这些方法。
1. DATE 类型
在 MySQL 中,有一种专门用于存储日期的数据类型,即 DATE
类型。DATE
类型用于表示年、月、日,格式为 YYYY-MM-DD
。我们可以使用 DATE
类型来存储生日、发布日期等日期信息。
1.1 创建表并插入数据
首先,我们创建一个名为 users
的表,包含 id
、name
和 birthday
三个字段。
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
birthday DATE
);
INSERT INTO users (id, name, birthday)
VALUES
(1, 'Alice', '1990-01-01'),
(2, 'Bob', '1995-06-15'),
(3, 'Charlie', '1988-12-31');
1.2 查询日期
我们可以使用 SELECT
语句来查询 DATE
类型的数据。例如,查询生日在 1990 年之后的用户:
SELECT *
FROM users
WHERE birthday > '1990-01-01';
运行以上查询语句后,可以得到以下结果:
| id | name | birthday |
|----|----------|--------------|
| 2 | Bob | 1995-06-15 |
| 3 | Charlie | 1988-12-31 |
1.3 计算日期差
MySQL 提供了 DATEDIFF
函数来计算两个日期的差值。该函数的使用方法如下所示:
SELECT DATEDIFF('2022-09-01', '2022-08-01') AS diff;
运行上述语句将得到以下结果:
+------+
| diff |
+------+
| 31 |
+------+
以上示例计算了两个日期相差的天数。
2. 时间戳
除了使用 DATE
类型来存储日期,MySQL 还支持使用时间戳(TIMESTAMP
)来存储和操作日期和时间。时间戳表示从 1970 年 1 月 1 日至今的秒数。
2.1 创建表并插入数据
假设我们有一个名为 articles
的表,用于存储文章的信息,包含 id
、title
和 created_at
字段。created_at
字段用于存储文章的创建时间。
CREATE TABLE articles (
id INT PRIMARY KEY,
title VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO articles (id, title)
VALUES
(1, 'MySQL 入门教程'),
(2, 'SQL 进阶技巧'),
(3, '数据库设计原则');
在上述创建表的语句中,我们为 created_at
字段设置了默认值为 CURRENT_TIMESTAMP
,这意味着当插入数据时,如果没有指定 created_at
的值,将自动使用当前时间。
2.2 查询最近创建的文章
为了查询最近创建的文章,我们可以使用 SELECT
语句并按照 created_at
字段进行降序排列。
SELECT *
FROM articles
ORDER BY created_at DESC
LIMIT 5;
以上查询将返回最近创建的 5 篇文章。
2.3 修改时间戳
有时候,我们可能需要修改时间戳字段的值。我们可以使用 UPDATE
语句来更新时间戳字段的值。
UPDATE articles
SET created_at = '2022-09-01 10:00:00'
WHERE id = 1;
运行以上语句后,指定文章的创建时间将被更新为 2022-09-01 10:00:00
。
3. NOW() 函数
在 MySQL 中,使用 NOW()
函数可以获取当前日期和时间。NOW()
函数返回一个包含当前日期和时间的 DATETIME
值。
3.1 查询当前日期和时间
我们可以使用 SELECT
语句和 NOW()
函数来查询当前的日期和时间。
SELECT NOW() AS current_datetime;
运行上述语句后,我们可以得到当前日期和时间的值。
+---------------------+
| current_datetime |
+---------------------+
| 2022-09-15 14:30:00 |
+---------------------+
3.2 插入当前日期和时间
我们可以将 NOW()
函数的返回值插入到表中的字段中。例如,为 articles
表的 created_at
字段插入当前日期和时间:
INSERT INTO articles (id, title, created_at)
VALUES
(4, 'MySQL 高级调优', NOW());
运行以上语句后,created_at
字段将包含当前的日期和时间。
4. 时间函数
MySQL 提供了许多内置函数来对日期和时间进行操作和计算。
4.1 YEAR()、MONTH()、DAY()
YEAR()
、MONTH()
、DAY()
函数分别用于提取日期中的年、月、日。
例如,提取日期字段 birthday
中的年份:
SELECT YEAR(birthday) AS birth_year
FROM users;
4.2 HOUR()、MINUTE()、SECOND()
HOUR()
、MINUTE()
、SECOND()
函数用于提取时间中的时、分、秒。
例如,提取时间字段 created_at
中的小时和分钟:
SELECT HOUR(created_at) AS hour, MINUTE(created_at) AS minute
FROM articles;
4.3 DATE_FORMAT()
DATE_FORMAT()
函数可以将日期和时间格式化为指定的字符串。常用的格式化符号有:
%Y
:四位数的年份%m
:月份(01-12)%d
:月份中的天数(01-31)%H
:小时(00-23)%i
:分钟(00-59)%s
:秒(00-59)
例如,将日期字段格式化为 YYYY 年 MM 月 DD 日
的格式:
SELECT DATE_FORMAT(birthday, '%Y 年 %m 月 %d 日') AS formatted_birthday
FROM users;
以上查询将返回生日字段的格式化结果。
5. 总结
本文介绍了 MySQL 中获取和操作时间的几种方法。通过使用 DATE
类型、时间戳、NOW()
函数以及其他内置函数,我们可以轻松地进行日期和时间的查询、计算和格式化。