只在复合 INTERVAL 单位的封闭单位值集中写入一个值,MySQL 将返回什么?

介绍

MySQL中INTERVAL是一个表达式,用于表示一个时间段。它可以被用于复合单位,比如小时和分钟。本篇文章将讨论MySQL在复合INTERVAL单位的封闭单位值集中写入一个值时,会返回什么。

什么是复合单位?

复合单位指的是两个或更多的时间单位组合在一起。例如,小时和分钟可以一起使用,表示“5小时30分钟”。

INTERVAL的用法

INTERVAL表示从当前时间增加或减少一定的时间段。可以用于日期和时间类型的任何表达式。以下是一些例子。

在日期上加一个月:

SELECT DATE_ADD('2021-03-31', INTERVAL 1 MONTH) AS result;

结果:

+------------+

| result |

+------------+

| 2021-04-30 |

+------------+

在时间上减去一个小时:

SELECT TIME_SUB('12:30:00', INTERVAL 1 HOUR) AS result;

结果:

+----------+

| result |

+----------+

| 11:30:00 |

+----------+

复合单位的封闭单位值集

MySQL支持各种时间单位的组合,它们可以被称为“复合单位”。复合单位的封闭的单位集合包括YEAR_MONTH、DAY_HOUR、 DAY_MINUTE、DAY_SECOND、HOUR_MINUTE、HOUR_SECOND和MINUTE_SECOND。只有这些组合可以被用于INTERVAL。

YEAR_MONTH: 表示年和月。只能用于DATE和DATETIME类型。

DAY_HOUR: 表示日和小时。只能用于DATETIME类型。

DAY_MINUTE: 表示日、小时和分钟。只能用于DATETIME类型。

DAY_SECOND: 表示日、小时、分钟和秒钟。只能用于DATETIME类型。

HOUR_MINUTE: 表示小时和分钟。只能用于TIME和DATETIME类型。

HOUR_SECOND: 表示小时、分钟和秒钟。只能用于TIME和DATETIME类型。

MINUTE_SECOND: 表示分钟和秒钟。只能用于TIME和DATETIME类型。

例如,下面的查询将在日期加上十年,三个月和一天。

SELECT DATE_ADD('2021-08-15', INTERVAL '10-3 1' YEAR_MONTH_DAY) AS result;

结果:

+------------+

| result |

+------------+

| 2031-11-16 |

+------------+

下面的查询将在时间上加上10小时,30分钟和5秒钟。

SELECT TIME_ADD('10:30:00', INTERVAL '10:30.5' HOUR_MINUTE_SECOND) AS result;

结果:

+----------+

| result |

+----------+

| 21:00:05 |

+----------+

只在复合INTERVAL单位的封闭单位值集中写入一个值

在只给定复合INTERVAL单位的封闭单位值集合中写一个值时,MySQL将返回第一个值。例如,如果您写入一个小时,MySQL将返回00:00:00。

SELECT TIME('01:30:00', INTERVAL 1 HOUR) AS result;

结果:

+----------+

| result |

+----------+

| 02:30:00 |

+----------+

我们可以看到,MySQL在“小时和分钟”单位的组合中增加了1小时。因为这个组合的封闭单位值集合只有小时,分钟和秒钟,MySQL返回了00:00:00作为秒钟的默认值,因此最终的结果是02:30:00。

总结

本文介绍了MySQL中INTERVAL和复合INTERVAL单位的封闭单位值集,同时也介绍了MySQL在只在复合INTERVAL单位的封闭单位值集中写入一个值时会返回什么。在使用INTERVAL时,要确保使用合适的复合单位。当我们对已知的封闭单位值集中写入一个值时,MySQL将返回该值和默认值的组合。只有深入了解INTERVAL的用法和复合单位的封闭单位值集合,才能正确地使用它们来操作时间和日期。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签