MySQL DATE_FORMAT

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 Function 1

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');
DATE_FORMAT Example 2

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');
DATE_FORMAT %u, %X, %V, %x, %v format 3

在此,%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');
DATE_FORMAT Function 4

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 Example 5

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');
h, H, I, p arguments

在此 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');
MySQL DATE_FORMAT k, l, p, i arguments

在此 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');
%j, %r, %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');
DATE FORMAT Example 9

在此 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');
DATE FORMAT 10