MariaDB 复合日期和时间单位解释

发布于

MariaDB 包含一堆日期和时间单位,您可以在处理日期和时间值时使用它们。例如,是一个单位,是另一个单位。MONTH``HOUR

有些单位是复合单位。复合单元是指两个单元合并为一个单元。命名约定是每个单元名称都用下划线分隔。例如,表示分钟和秒。MINUTE_SECOND

下面是一些演示复合单元如何在 MariaDB 中工作的示例。

复合单元列表

首先,以下是MariaDB中可用的复合单元列表:

单位 描述
SECOND_MICROSECOND 秒.微秒
MINUTE_MICROSECOND 分钟.秒.微秒
MINUTE_SECOND 分钟.秒
HOUR_MICROSECOND 小时.分钟.秒.微秒
HOUR_SECOND 小时、分钟、秒
HOUR_MINUTE 小时.分钟
DAY_MICROSECOND 天 小时.分钟.秒.微秒
DAY_SECOND 天 小时.分钟.秒
DAY_MINUTE 天 小时.分钟
DAY_HOUR 天 小时
YEAR_MONTH 年-月

只要看他们的名字就可以很好地了解他们的工作。

在提取日期/时间值的各个部分时,以及在执行诸如将时间间隔加减到日期/时间值之类的操作时,可以使用复合单位(与任何日期/时间单位一样)。

在对日期执行算术运算时,这些运算符可以与 and 运算符一起使用,具有 、、、、 和 等函数。+``-ADDDATE()SUBDATE()DATE_ADD()DATE_SUB()EXTRACT()TIMESTAMPADD()TIMESTAMPDIFF()

它们也可以在 和 函数的子句中使用。ON SCHEDULE``CREATE_EVENT()``ALTER_EVENT()

示例 – 提取复合单元

日期和时间单位可以与一堆不同的函数以及各种其他上下文一起使用。接受这些单位的函数之一是函数。此函数从给定日期或日期时间值返回指定的日期/时间单位。EXTRACT()

下面是使用复合单位从日期中提取年份和月份的示例:

SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');

输出:

+---------------------------------------+
| EXTRACT(YEAR_MONTH FROM '2030-12-25') |
+---------------------------------------+
|                                203012 |
+---------------------------------------+

我们可以看到,年份和月份作为一个值返回。

示例 – 添加/减去复合单元

复合单位还可用于添加和减去日期和时间间隔。

例:

SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;

输出:

+-----------------------------------------+
| '2030-12-25' + INTERVAL '2:08' DAY_HOUR |
+-----------------------------------------+
| 2030-12-27 08:00:00                     |
+-----------------------------------------+

在这个示例中,关于复合单元,有两个部分需要注意。

与前面的示例一样,我们使用了复合单元(在本例中)。关于要添加的实际间隔,我们使用冒号来分隔复合单元的每一侧。DAY_HOUR

在本例中,我们指定了 ,它将日期值增加了 2 天零 8 小时。原始日期没有时间部分,因此假定初始时间为 。'2:08'``00:00:00

MariaDB对格式的严格性是合理的宽容。我们可以通过使用不同的分隔符以及省略前导零来获得相同的效果。

下面是另一个使用具有不同时间间隔的函数的示例:DATE_ADD()

SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);

输出:

+-------------------------------------------------+
| DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) |
+-------------------------------------------------+
| 2030-12-27 08:00:00                             |
+-------------------------------------------------+

以下是各种复合单元的更多示例:

SELECT 
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";

输出:

+---------------------+---------------------+---------------------+
| YEAR_MONTH          | HOUR_SECOND         | DAY_MINUTE          |
+---------------------+---------------------+---------------------+
| 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |
+---------------------+---------------------+---------------------+