MySQL 日期类型和日期函数详解

在MySQL数据库中,日期是一个非常重要的数据类型,它提供了一系列的日期函数,使得我们可以方便地对日期进行计算和操作。本文将介绍MySQL中日期类型的使用和常用的日期函数,并通过示例代码来说明它们的用法。

日期类型

在MySQL中,日期类型主要有三种:DATE、DATETIME和TIMESTAMP。

  • DATE类型表示年月日,格式为YYYY-MM-DD,例如'2022-01-01'。
  • DATETIME类型表示年月日时分秒,格式为YYYY-MM-DD HH:MM:SS,例如'2022-01-01 12:00:00'。
  • TIMESTAMP类型也表示年月日时分秒,与DATETIME格式相同,但它具有自动更新的功能。

下面是创建一个包含日期类型字段的表的示例代码:

CREATE TABLE test (
  id INT PRIMARY KEY,
  date_column DATE,
  datetime_column DATETIME,
  timestamp_column TIMESTAMP
);

日期函数

MySQL提供了丰富的日期函数,用于对日期进行计算、格式化和操作。下面介绍一些常用的日期函数。

CURDATE()和CURRENT_DATE()

CURDATE()函数返回当前日期,格式为YYYY-MM-DD。

SELECT CURDATE();

CURTIME()和CURRENT_TIME()

CURTIME()函数返回当前时间,格式为HH:MM:SS。

SELECT CURTIME();

NOW()和CURRENT_TIMESTAMP()

NOW()函数返回当前日期和时间,格式为YYYY-MM-DD HH:MM:SS。

SELECT NOW();

DATE()、TIME()和DATETIME()

这些函数用于从日期时间中提取日期或时间部分。

SELECT DATE(NOW());
SELECT TIME(NOW());
SELECT DATETIME(NOW());

YEAR()、MONTH()和DAY()

这些函数用于从日期中提取年、月、日。

SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());

DATE_FORMAT()

DATE_FORMAT()函数用于将日期格式化为指定的字符串。

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
SELECT DATE_FORMAT(NOW(), '%H:%i:%s');
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');

DATE_ADD()和DATE_SUB()

这些函数用于对日期进行加减运算。

SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);

DATEDIFF()

DATEDIFF()函数用于计算两个日期之间的天数差。

SELECT DATEDIFF('2022-01-01', '2021-12-31');

DATE_FORMAT()和STR_TO_DATE()

DATE_FORMAT()函数用于将日期格式化为字符串,而STR_TO_DATE()函数则用于将字符串解析为日期。

SELECT DATE_FORMAT('2022-01-01', '%Y-%m-%d');
SELECT STR_TO_DATE('2022-01-01', '%Y-%m-%d');

示例代码说明

下面通过一些示例代码来具体说明日期类型和日期函数的使用。

首先,我们在数据库中创建一个名为students的表,用于存储学生的信息。

CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  birthdate DATE
);

然后,我们向表中插入一些示例数据。

INSERT INTO students (id, name, birthdate)
VALUES (1, '张三', '2000-01-01'),
       (2, '李四', '2001-02-02'),
       (3, '王五', '2002-03-03');

接下来,我们可以使用日期函数来查询学生的年龄。

SELECT name, YEAR(NOW()) - YEAR(birthdate) AS age
FROM students;

最后,我们可以使用日期函数来计算学生的出生日期之前的一周的日期范围。

SELECT name, DATE_SUB(birthdate, INTERVAL 7 DAY) AS start_date, birthdate AS end_date
FROM students;

总结

MySQL提供了一系列的日期类型和日期函数,使得我们可以方便地对日期进行处理。在实际应用中,我们可以根据具体的需求来选择适合的日期类型和日期函数来使用。

本文对常用的日期类型和日期函数进行了详细的介绍,并通过示例代码来说明它们的用法。