从MariaDB中的日期返回年份的4个函数

发布于

以下是 4 个函数,可让您从 MariaDB 中的某个日期返回年份。三个函数只返回年份,一个函数同时返回年份和周。

函数YEAR()

该函数返回给定日期的年份。结果在范围中,或者对于年份为零的日期(例如)。YEAR()1000``9999``0``0000-00-00

例:

SELECT YEAR('2023-07-25');

结果:

+——————–+ | YEAR(‘2023-07-25’) | +——————–+ | 2023 | +——————–+

函数EXTRACT()

该函数允许您从日期中提取指定的单位。因此,您可以使用它从日期中提取年份(以及其他单位)。``EXTRACT()

例:

SELECT EXTRACT(YEAR FROM '2023-07-25');

结果:

+———————————+ | EXTRACT(YEAR FROM ‘2023-07-25’) | +———————————+ | 2023 | +———————————+

函数DATE_FORMAT()

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

因此,您可以使用此函数返回从日期开始的年份(以及任何其他单位)。有不同的格式说明符可用于以不同的格式返回年份。例如四位数年份、两位数年份等。

下面是一个以各种形式返回年份的示例:

SELECT 
    DATE_FORMAT('2023-01-01', '%X') AS "%X",
    DATE_FORMAT('2023-01-01', '%x') AS "%x",
    DATE_FORMAT('2023-01-01', '%Y') AS "%Y",
    DATE_FORMAT('2023-01-01', '%y') AS "%y";

结果:

+——+——+——+——+ | %X | %x | %Y | %y | +——+——+——+——+ | 2023 | 2022 | 2023 | 23 | +——+——+——+——+

请注意,返回的年份与其他年份不同。%x

下面是每个格式说明符的说明,它解释了返回不同结果的原因:%x

格式说明符 描述
%X 当一周的第一天是星期日时,以 4 位数字表示年份。与一起使用。%V
%x 当一周的第一天是星期一时,带有 4 位数字的年份。与一起使用。%v
%Y 年份为 4 位数字。
%y 年份为 2 位数字。

这是上表中提到的andas的描述:%V``%v

格式说明符 描述
%V 周数 (01-53),当一周的第一天是星期日时。与一起使用。%X
%v 周数 (01-53),当一周的第一天是星期一时。与一起使用。%x

因此,我们可以将这些格式说明符添加到上面的示例中,并得到以下内容:

SELECT 
    DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
    DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";

结果:

+———-+———-+ | %X, %V | %x, %v | +———-+———-+ | 2023, 01 | 2022, 52 | +———-+———-+

请注意,这并不总是返回不同的年份 - 这取决于使用的实际日期。有时,它会返回与其他人不同的年份。%x``%X

让我们将日期向前移动一年:

SELECT 
    DATE_FORMAT('2024-01-01', '%X') AS "%X",
    DATE_FORMAT('2024-01-01', '%x') AS "%x",
    DATE_FORMAT('2024-01-01', '%Y') AS "%Y",
    DATE_FORMAT('2024-01-01', '%y') AS "%y";

结果:

+——+——+——+——+ | %X | %x | %Y | %y | +——+——+——+——+ | 2023 | 2024 | 2024 | 24 | +——+——+——+——+

这一次是奇怪的一个。如上表所述,这取决于一周的第一天是星期日还是星期一。%X

当然,如果我们进一步进入这一年,所有格式说明符都会返回同一年:

SELECT 
    DATE_FORMAT('2024-12-12', '%X') AS "%X",
    DATE_FORMAT('2024-12-12', '%x') AS "%x",
    DATE_FORMAT('2024-12-12', '%Y') AS "%Y",
    DATE_FORMAT('2024-12-12', '%y') AS "%y";

结果:

+——+——+——+——+ | %X | %x | %Y | %y | +——+——+——+——+ | 2024 | 2024 | 2024 | 24 | +——+——+——+——+

请参阅MariaDB格式字符串 获取格式字符串/说明符的完整列表。

函数YEARWEEK()

该函数返回给定日期的年份和周。YEARWEEK()

例:

SELECT YEARWEEK('2023-01-01');

结果:

+————————+ | YEARWEEK(‘2023-01-01’) | +————————+ | 202301 | +————————+

结果中的年份可能与一年中第一周和最后一周的日期参数中的年份不同。

如果我们向前推进一年,会发生什么:

SELECT YEARWEEK('2024-01-01');

结果:

+————————+ | YEARWEEK(‘2024-01-01’) | +————————+ | 202353 | +————————+

该函数接受可选的第二个参数来指定模式。您从此功能获得的实际结果将取决于所使用的模式。如果省略 mode 参数,则使用系统变量的值。YEARWEEK()``default_week_format

请参阅YEARWEEK()如何在 MariaDB 中工作,了解有关每种模式和示例的更多信息。