在 MariaDB 中将年、月和日与日期分开的 3 种方法

发布于

MariaDB 具有多个函数,使您能够从日期/时间值中提取各种日期和时间部分。如果需要,您可以使用它们将每个日期/时间组件分隔到其自己的列中。

以下是从 MariaDB 中的日期值中提取年、月和日的三种方法。

、 和函数YEAR()``MONTH()``DAY()

、 和函数分别从日期或日期时间值中提取年、月和日。YEAR()MONTH()DAY()

下面是使用这些函数在其自己的列中返回每个日期组件的示例:

SELECT 
    YEAR('2025-08-30') AS "Year",
    MONTH('2025-08-30') AS "Month",
    DAY('2025-08-30') AS "Day";

结果:

+——+——-+——+ | Year | Month | Day | +——+——-+——+ | 2025 | 8 | 30 | +——+——-+——+

该函数实际上是函数的同义词,因此任何一个都将返回相同的结果。DAY()DAYOFMONTH()

还有 afunction、afunction、afunction 和 afunction,每个都返回一天的不同表示形式。WEEKDAY()DAYOFWEEK()DAYOFYEAR()DAYNAME()

此外,还有一个函数返回月份名称,而不是其编号。MONTHNAME()

下面是包含这些函数的另一个示例:

SELECT 
    YEAR('2025-08-30') AS "YEAR",
    MONTH('2025-08-30') AS "MONTH",
    MONTHNAME('2025-08-30') AS "MONTHNAME",
    DAY('2025-08-30') AS "DAY",
    DAYOFMONTH('2025-08-30') AS "DAYOFMONTH",
    WEEKDAY('2025-08-30') AS "WEEKDAY",
    DAYOFWEEK('2025-08-30') AS "DAYOFWEEK",
    DAYOFYEAR('2025-08-30') AS "DAYOFYEAR",
    DAYNAME('2025-08-30') AS "DAYNAME";

结果(使用垂直输出):

  YEAR: 2025
 MONTH: 8

MONTHNAME: August DAY: 30 DAYOFMONTH: 30 WEEKDAY: 5 DAYOFWEEK: 7 DAYOFYEAR: 242 DAYNAME: Saturday

您还可以使用诸如返回周数和返回季度等函数。WEEK()QUARTER()

例:

SELECT 
    WEEK('2025-08-30') AS "Week",
    QUARTER('2025-08-30') AS "Quarter";

结果:

+——+———+ | Week | Quarter | +——+———+ | 34 | 3 | +——+———+

该函数接受允许您指定模式的第二个参数。这可能会更改生成的周数,具体取决于实际日期。请参阅WEEK()在 MariaDB 中的工作方式以获取更多信息和示例。WEEK()

函数EXTRACT()

该函数允许您从日期/时间值中提取指定的单位。因此,您可以使用它从日期中提取年、月和日(如果需要,还可以提取周和季度)。EXTRACT()

例:

SELECT 
    EXTRACT(YEAR FROM '2023-03-12') AS "Year",
    EXTRACT(MONTH FROM '2023-03-12') AS "Month",
    EXTRACT(DAY FROM '2023-03-12') AS "Day",
    EXTRACT(WEEK FROM '2023-03-12') AS "Week",
    EXTRACT(QUARTER FROM '2023-03-12') AS "Quarter";

结果:

+——+——-+——+——+———+ | Year | Month | Day | Week | Quarter | +——+——-+——+——+———+ | 2023 | 3 | 12 | 11 | 1 | +——+——-+——+——+———+

函数DATE_FORMAT()

该函数允许您根据格式字符串格式化日期或日期时间值。格式字符串指定应如何设置日期/时间的格式。DATE_FORMAT()

因此,我们可以使用此函数从日期返回年、月、日和周。

例:

SELECT 
    DATE_FORMAT('2035-12-08', '%Y') AS "Year",
    DATE_FORMAT('2035-12-08', '%m') AS "Month",
    DATE_FORMAT('2035-12-08', '%d') AS "Day",
    DATE_FORMAT('2035-12-08', '%U') AS "Week";

结果:

+——+——-+——+——+ | Year | Month | Day | Week | +——+——-+——+——+ | 2035 | 12 | 08 | 48 | +——+——-+——+——+

每个日期部分都有几种可能的格式说明符。每个日期部分可以返回不同的值,具体取决于提供的实际格式说明符。例如,您可以使用代替返回完整的月份名称。%M``%m

请参阅MariaDB格式字符串 获取可用于的格式字符串/说明符的完整列表。DATE_FORMAT()