MySQL 日期格式化详解

日期在数据库中是一种常见的数据类型,也是开发中非常重要的一部分。在 MySQL 中,日期的存储和格式化是非常灵活和强大的。本文将详细介绍 MySQL 中的日期格式化,并提供一些常用的代码示例。

日期格式化函数

MySQL 提供了多种日期格式化函数,可以根据需求将日期以不同的格式显示出来。下面是几个常用的日期格式化函数:

  1. DATE_FORMAT(date, format):将日期格式化为指定的格式。其中,date 是日期值,format 是格式化字符串。

示例代码:

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS formatted_date;

结果:

formatted_date
2023-08-21
  1. YEAR(date):获取日期的年份。

示例代码:

SELECT YEAR(NOW()) AS year;

结果:

year
2023
  1. MONTH(date):获取日期的月份。

示例代码:

SELECT MONTH(NOW()) AS month;

结果:

month
08
  1. DAY(date):获取日期的天。

示例代码:

SELECT DAY(NOW()) AS day;

结果:

day
21
  1. HOUR(time):获取时间的小时。

示例代码:

SELECT HOUR(NOW()) AS hour;

结果:

hour
12
  1. MINUTE(time):获取时间的分钟。

示例代码:

SELECT MINUTE(NOW()) AS minute;

结果:

minute
30

还有其他一些函数,如 SECOND(time)(获取时间的秒)、DAYNAME(date)(获取日期的星期几)、WEEK(date)(获取日期属于一年中的第几周)等,根据需求选择合适的函数进行日期格式化。

日期格式化字符串

日期格式化函数中的 format 参数需要一个格式化字符串。下面是一些常用的日期格式化字符串:

  • %Y:四位数的年份,如 2023;
  • %y:两位数的年份,如 23;
  • %m:两位数的月份,如 08;
  • %c:月份,不带前导零,如 8;
  • %d:两位数的日期,如 21;
  • %e:日期,不带前导零,如 21;
  • %H:24 小时制的小时,如 12;
  • %h:12 小时制的小时,如 10;
  • %i:两位数的分钟,如 30;
  • %s:两位数的秒数,如 45;
  • %p:AM 或 PM;
  • %W:星期几的完整名称,如 Sunday;
  • %w:星期几的数字表示,0 表示 Sunday;
  • %b:月份的缩写,如 Aug;
  • %M:月份的完整名称,如 August;
  • %a:星期几的缩写,如 Sun;
  • %r:时间,12 小时制,如 10:30:45 AM;
  • %T:时间,24 小时制,如 10:30:45;

这些格式化字符串可以根据需要组合使用,以满足不同的日期格式化需求。

示例

下面是一个示例,展示了如何使用 MySQL 的日期格式化函数将日期和时间格式化为指定的格式:

-- 创建示例表
CREATE TABLE example (
  id INT PRIMARY KEY,
  date_col DATE,
  time_col TIME,
  datetime_col DATETIME
);

-- 插入示例数据
INSERT INTO example (id, date_col, time_col, datetime_col)
VALUES (1, '2023-08-21', '12:30:45', '2023-08-21 12:30:45');

-- 查询格式化后的日期和时间
SELECT
  id,
  DATE_FORMAT(date_col, '%Y-%m-%d') AS formatted_date,
  DATE_FORMAT(time_col, '%H:%i:%s') AS formatted_time,
  DATE_FORMAT(datetime_col, '%Y-%m-%d %H:%i:%s') AS formatted_datetime
FROM
  example;

结果:

| id | formatted_date | formatted_time | formatted_datetime | | --- | ------------