MySQL DATE_FORMAT 函数详解

引言

MySQL 是一种常用的关系型数据库管理系统,提供了丰富的函数用于处理日期和时间数据。其中,DATE_FORMAT 函数用于将日期和时间数据格式化为指定的字符串。

本文将详细介绍 DATE_FORMAT 函数的用法,包括参数、返回结果以及常见的格式化字符串示例。同时,为了更好地理解函数的使用,我们将通过代码示例、类图和序列图的形式进行说明。

DATE_FORMAT 函数概述

DATE_FORMAT 函数用于将日期和时间数据格式化为字符串。其基本语法如下所示:

DATE_FORMAT(date, format)

其中,date 参数表示待格式化的日期或时间数据,可以是日期、日期时间或时间类型的字段、变量或常量;format 参数是一个字符串,用于指定将 date 格式化为什么样的字符串。

DATE_FORMAT 函数示例

格式化日期

我们首先来看一下如何使用 DATE_FORMAT 函数将日期格式化为指定的字符串。假设我们有一个存储了日期数据的表 users,其中包含了 birthday 字段。

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

INSERT INTO users (id, name, birthday)
VALUES (1, 'John', '1990-12-25');

现在,我们想要将 birthday 字段的日期格式化为 YYYY年MM月DD日 的形式。可以使用以下 SQL 语句:

SELECT DATE_FORMAT(birthday, '%Y年%m月%d日') AS formatted_birthday
FROM users;

运行以上 SQL 语句后,将会得到如下结果:

formatted_birthday
1990年12月25日

格式化日期时间

除了日期,DATE_FORMAT 函数同样可以用于格式化日期时间数据。假设我们有一个存储了日期时间数据的表 orders,其中包含了 order_time 字段。

CREATE TABLE orders (
  id INT PRIMARY KEY,
  product VARCHAR(50),
  order_time DATETIME
);

INSERT INTO orders (id, product, order_time)
VALUES (1, 'Apple', '2022-02-01 10:30:00');

现在,我们想要将 order_time 字段的日期时间格式化为 YYYY-MM-DD HH:mm:ss 的形式。可以使用以下 SQL 语句:

SELECT DATE_FORMAT(order_time, '%Y-%m-%d %H:%i:%s') AS formatted_order_time
FROM orders;

运行以上 SQL 语句后,将会得到如下结果:

formatted_order_time
2022-02-01 10:30:00

格式化时间

除了日期和日期时间,DATE_FORMAT 函数还可以用于格式化时间数据。假设我们有一个存储了时间数据的表 events,其中包含了 start_time 字段。

CREATE TABLE events (
  id INT PRIMARY KEY,
  title VARCHAR(50),
  start_time TIME
);

INSERT INTO events (id, title, start_time)
VALUES (1, 'Meeting', '14:30:00');

现在,我们想要将 start_time 字段的时间格式化为 HH:mm:ss 的形式。可以使用以下 SQL 语句:

SELECT DATE_FORMAT(start_time, '%H:%i:%s') AS formatted_start_time
FROM events;

运行以上 SQL 语句后,将会得到如下结果:

formatted_start_time
14:30:00

DATE_FORMAT 函数常见格式化字符串

DATE_FORMAT 函数支持多种格式化字符串,下面是一些常见的格式化字符串示例:

  • %Y:四位数的年份,例如:2022
  • %y:两位数的年份,例如:22
  • %m:两位数的月份(01-12)
  • %c:月份(1-12)
  • %d:两位数的日期(01-31)
  • %e:日期(1-31)
  • %H:24 小时制的小时数(00-23)
  • %h:12 小时制的小时数(01-12)
  • %i:两位数的分钟数(00-59)