在 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 指示符的时间。