MySQL DATE_FORMAT 函数是日期函数之一,可用于根据给定的说明符格式化日期和时间值。本节将通过示例展示如何使用此 DATE_FORMAT 函数来格式化给定的日期表达式。
用于格式化日期的 MySQL DATE_FORMAT 函数的基本语法如下所示。
DATE_FORMAT(Date, format_specifier);
MySQL 日期格式选项
以下是使用 Date_Format 函数处理或格式化日期和时间时可用的 MySQL 日期格式说明符列表。
| 格式说明符 | 描述 |
|---|---|
| %a | 星期名称的缩写形式。例如,Sun、...、Thu...Sat。 |
| %b | 月份名称的缩写形式。例如,Jan、..Mar、…Dec。 |
| %c | 此日期格式说明符返回 1 到 12 的数字月份。 |
| %D | 带有英文后缀的月份中的日期。例如,0th、1st、2nd 等。 |
| %d | 月份中的数字日期 00 到 31。 |
| %e | 月份中的日期(0 到 31)。 |
| %f | 此 DATE_FORMAT 返回微秒,范围从 000000 到 999999。 |
| %H | 此日期格式说明符显示小时(00..23)。 |
| %h | 小时(00..12)。 |
| %I | 小时 01 到 12。 |
| %i | 此说明符打印分钟的数字值,范围从 00 到 59。 |
| %j | 一年中的第几天 001 到 366。 |
| %k | 小时 0 到 23。 |
| %l | 小时(1 到 12)。 |
| %M | 此日期格式说明符打印月份名称。例如,January、…、December。 |
| %m | 数字月份,从 00 到 12。 |
| %p | 打印 AM 或 PM。 |
| %r | 一年中的第几天或日期编号,即 1 到 366。 |
| %S | 秒 00:59。 |
| %s | 秒 00:59。 |
| %T | 此 MySQL DATE_FORMAT 以 24 小时格式返回时间。hh:mm:ss。 |
| %U | 等同于模式为 0 的WEEK() 函数。在此,星期日是一周的第一天(00..53)。 |
| %u | 等同于模式为 1 的 WEEK()。在此,星期一是周的第一天(00..53)。 |
| %V | 与 WEEK() 模式 2 相同。在此,星期日是一周的第一天(01..53)。与 %X 一起使用。 |
| %v | 等同于 WEEK() 模式 3。在此,星期一是周的第一天(01..53)。在函数中与 %x 一起使用。 |
| %W | 星期几的名称或周名,即 Sunday、Monday、…Saturday。 |
| %w | 星期几编号,从 0 到 6,其中 0 = 星期日,6 = 星期六。 |
| %X | 周的数字四位数年份。在此,星期日是一周的第一天。与 %V 一起使用。 |
| %x | 周的数字四位数年份。在此,星期一是周的第一天。与 %v 一起使用。 |
| %Y | 数字年份,四位数。 |
| %y | 年份,两位数。 |
| %% | 字面意义上的百分号字符。 |
| %x | 任何未在上面列出的 x。 |
MySQL DATE_FORMAT 函数示例
以下是此日期格式函数的示例列表。下面显示的查询可帮助您了解此 MYSQL Date_Format 函数中所有可用的日期格式说明符。
MySQL DATE FORMAT 示例
在此,%Y 返回 4 位年份值,%y 打印两位数年份值。接下来,%p 根据给定的MySQL 时间返回 AM 或 PM。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%Y');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%y');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%p');

MySQL DATE_FORMAT 示例 2
在此示例中,首先,%a 返回星期的缩写形式(Mon、Sat 等),%W 返回星期名称(Sunday、Monday 等)。接下来,%U 返回周数,其中星期日是第一天。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%a');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%W');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%U');

MySQL DATE FORMAT 示例 3
在此日期函数示例中,首先,%u 返回周数,其中星期一是第一天。接下来,%V 与 %X 一起使用,它返回星期日为一周第一天时的年份和周数。最后,第三个语句 %x %v 返回星期一为第一天时的年份和周数。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%u');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%X %V');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%x %v');

在此,%T 以 24 小时格式 hh:mm:ss 返回时间。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%x');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%X');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%T');

MySQL DATE_FORMAT 示例 4
在此示例中,首先,%b 返回月份的缩写形式(Jan、Feb、Dec 等),%M 返回月份名称(January、…、December)。接下来,%m 返回月份编号(January = 1、…、December = 12)。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%b');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%M');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%m');

DATE_FORMAT 函数示例 5
在此示例中,%H 以 24 小时格式返回小时(0 到 23)。接下来,%h 和 %I 以 12 小时格式返回小时值(1 到 12)。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%H');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%h');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%I %p');

在此 MySQL DATE_FORMAT 示例中,%k 以 24 小时格式返回小时(0 到 23),%l 返回 12 小时格式的小时日期(1 到 12)。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%k');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%l %p');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%i');

在此 DATE_FORMAT 示例中,首先,%j 格式返回日期中的日编号或一年中的第几天(1 到 366)。接下来,%r 以 12 小时格式返回时间,并带有 AM 或 PM。最后,第三个语句返回给定日期时间表达式中的秒值。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%j');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%r');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%s, %S');

在此,%D 返回带英文后缀的日编号,%d 和 %e 返回日编号。接下来,我们在函数中使用 %f 说明符来生成微秒。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%D');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%d, %e');
SELECT DATE_FORMAT('2018-12-31 23:59:02.222333', '%f');

在此 MySQL date_format 示例中,我们将使用多个说明符或组合多个说明符。第一个语句 %W, %M %Y,返回星期名、月份名和年份。接下来的语句 %W, %D %M %Y 返回星期名、日编号、月份名和年份。
第三个语句 %W, %D %M %Y %r,返回星期名、日编号、月份名、年份和 12 小时格式的时间(带 AM 或 PM)。
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%W, %M %Y');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%W, %D %M %Y');
SELECT DATE_FORMAT('2018-12-31 23:59:02', '%W, %D %M %Y %r');
