在 MariaDB 中将时间显示 AM/PM 指示符

本文阐述了在 MariaDB 中将 AM/PM 添加到时间值的几个方法。

发布于

MariaDB 内置了许多可以返回指定格式的时间和日期值的函数,其中最常用的是 DATE_FORMAT()TIME_FORMAT()

要将时间值使用 AM/PM 指示符,您需要使用 12 小时制格式化时间部分。结合几个格式说明符, 你可以轻松的做到显示 AM/PM 指示符。

格式说明符 %r

%r 格式说明符用于以 12 小时格式格式化时间,后跟 AM/PM 指示符。 %r 格式说明符相当于 '%I:%i:%S %p'

例:

SELECT DATE_FORMAT('2022-12-06 18:10:37', '%r');

输出:

+------------------------------------------+
| DATE_FORMAT('2022-12-06 18:10:37', '%r') |
+------------------------------------------+
| 08:10:37 PM                              |
+------------------------------------------+

当然,返回 AM 还是 PM 取决于实际时间。如果时间是 12:00:00 之前返回 AM, 否则返回 PM。即, AM 代表上午,PM 代表下午。

让我们看一下下面的时间位于 12:00:00 之前的这个例子:

SELECT DATE_FORMAT('2022-12-06 08:10:37', '%r');

输出:

+------------------------------------------+
| DATE_FORMAT('2022-12-06 08:10:37', '%r') |
+------------------------------------------+
| 08:10:37 AM                              |
+------------------------------------------+

DATE_FORMAT() 函数一样, TIME_FORMAT() 也接受 %r 格式说明符,正如下面的 TIME_FORMAT() 示例:

SELECT TIME_FORMAT('08:10:37', '%r');

输出:

+-------------------------------+
| TIME_FORMAT('08:10:37', '%r') |
+-------------------------------+
| 08:10:37 AM                   |
+-------------------------------+

TIME_FORMAT() 函数接受时间值和日期时间值,而 DATE_FORMAT() 仅接受日期和日期时间值。但是,TIME_FORMAT() 仅接受小时分钟和秒的格式说明符。

格式说明符 %p

%p 格式说明符是一种更具体的格式说明符,仅用于表示 AM/PM 指示符。它通常与其他格式说明符结合使用,以自定义格式返回时间。

如前所述,%r 格式说明符设置时间的格式,就好像它已使用以下格式字符串格式化一样:'%I:%i:%S %p'

让我们显式使用该字符串:

SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p');

输出:

+----------------------------------------+
| TIME_FORMAT('18:10:37', '%I:%i:%S %p') |
+----------------------------------------+
| 08:10:37 PM                            |
+----------------------------------------+

因此,我们得到的结果与使用 %r 格式说明符时的结果相同。

但是,使用此方法的一个好处是,我们可以以自己的自定义方式构造输出。

例如:

SELECT TIME_FORMAT('18:10:37', '%l:%i %p');

输出:

+-------------------------------------+
| TIME_FORMAT('18:10:37', '%l:%i %p') |
+-------------------------------------+
| 6:10 PM                             |
+-------------------------------------+

在这里,我们使用 %l 返回不带前导零的小时部分。我们还省略了时间的秒部分。

结论

本文阐述了在 MariaDB 中将 AM/PM 添加到时间值的几个方法:

  • 使用 DATE_FORMAT() 或者 TIME_FORMAT() 函数格式化输出时间值。
  • 使用 %p 格式说明符输出 AM/PM 指示符。
  • 使用 %r 格式说明符输出带有 AM/PM 指示符的时间。