从MariaDB中的日期获取月份名称的3种方法

发布于

以下是从 MariaDB 中的日期返回月份名称的三种方法。

函数MONTHNAME()

该函数专门设计用于从日期返回月份名称。为此,请在调用函数时将日期传递给函数。将返回完整的月份名称。MONTHNAME()

例:

SELECT MONTHNAME('2021-08-19');

输出:

+-------------------------+
| MONTHNAME('2021-08-19') |
+-------------------------+
| August                  |
+-------------------------+

月份名称使用的语言由系统变量的值控制。有关这如何影响输出的示例,请参阅。lc_time_namesMONTHNAME()

函数DATE_FORMAT()

该函数将给定日期格式化为指定格式。您可以在调用函数时指定日期和格式。DATE_FORMAT()

您可以通过传递格式字符串来返回完整的月份名称。%M

例:

SELECT DATE_FORMAT('2021-08-19', '%M');

输出:

+---------------------------------+
| DATE_FORMAT('2021-08-19', '%M') |
+---------------------------------+
| August                          |
+---------------------------------+

与月份名称一样,用于月份名称的语言由系统变量的值控制。但是,该函数接受可选的第三个参数,该参数允许您指定区域设置。MONTHNAME()``lc_time_names``DATE_FORMAT()

下面是指定区域设置的示例:

SELECT DATE_FORMAT('2021-08-19', '%M', 'ca_ES');

输出:

+------------------------------------------+
| DATE_FORMAT('2021-08-19', '%M', 'ca_ES') |
+------------------------------------------+
| agost                                    |
+------------------------------------------+

短月名称

传递给函数返回短月份名称。%b``DATE_FORMAT()

例:

SELECT DATE_FORMAT('2021-08-19', '%b');

输出:

+---------------------------------+
| DATE_FORMAT('2021-08-19', '%b') |
+---------------------------------+
| Aug                             |
+---------------------------------+

这可以通过函数复制,方法是使用从月份名称中获取前 3 个字符。MONTHNAME()LEFT()

例:

SELECT LEFT(MONTHNAME('2021-08-19'), 3);

输出:

+----------------------------------+
| LEFT(MONTHNAME('2021-08-19'), 3) |
+----------------------------------+
| Aug                              |
+----------------------------------+

通过将结果转换为具有类似函数的三字符数据类型,可以实现相同的概念。MONTHNAME()CAST()

但是,虽然此方法适用于其他语言,但可能并不总是适用于其他语言。例如:en_US

SET lc_time_names = 'th_TH';
SELECT 
    DATE_FORMAT('2021-08-19', '%b') AS "Short 1",
    LEFT(MONTHNAME('2021-08-19'), 3) AS "Short 2",
    MONTHNAME('2021-08-19') AS "Full";

输出:

+----------+-----------+-----------------------+
| Short 1  | Short 2   | Full                  |
+----------+-----------+-----------------------+
| ส.ค.     | สิง        | สิงหาคม                |
+----------+-----------+-----------------------+