在 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()