PostgreSQL 间隔2025年3月17日 | 阅读 8 分钟 在本节中,我们将了解 PostgreSQL 时间间隔 (Interval) 数据类型 的工作原理,还将看到 时间间隔数据类型 的 示例。以及最常用的时间间隔 函数,例如 NOW()、TO_CHAR()、EXTRACT()、justify_days()、justify_hours()、justify_interval()。PostgreSQL 时间间隔值的 输入和输出 格式。 什么是 PostgreSQL 时间间隔数据类型?在 PostgreSQL 中,Interval 是另一种用于存储和表示 年、月、日、时、分、秒 等时间的数据类型。月和日 的值是 整数值,而 秒字段 可以是 小数。 PostgreSQL 时间间隔数据类型值占用 16 字节存储 空间,可以存储的时间段范围是 -178000000 年到 178000000 年。 注意:秒字段中小数位数的数量称为精度 p。PostgreSQL 时间间隔数据类型语法PostgreSQL 时间间隔数据类型的语法如下: 在上面的语法中,我们有以下参数
让我们看一个示例,以便我们更好地理解如何 带 @ 参数和不带 @ 参数 编写时间间隔值。 或 注意:上面两条语句都可以使用,它们是相互对应的。此外,时间间隔值可以有一个可选的精度值 p,其允许范围从 0 到 6。PostgreSQL 时间间隔数据类型示例让我们看一个示例,以了解 PostgreSQL 时间间隔数据类型 如何工作。 在下面的示例中,我们将尝试找出过去 2 小时 30 分钟,在去年的当前时间;我们将使用以下命令: 输出 执行上述命令后,我们将得到以下输出,显示距离去年 2 小时 30 分钟: ![]() 我们已经看到了时间间隔数据类型的主要示例并了解了其工作原理。现在,我们将查看 时间间隔值 的输入和输出格式。 首先,我们将理解 PostgreSQL 时间间隔值的输入格式。 PostgreSQL 时间间隔输入格式在 PostgreSQL 中,我们有以下 详细语法,它可以帮助我们编写时间间隔值: 我们有以下参数,用于上述语法:
注意:上述语法也用于时间间隔输出格式,称为 postgres_verbose。在下面的示例中,我们将显示一些使用 详细语法 的时间间隔值。 ISO 8601 时间间隔格式除了上述详细语法之外,为了使用 ISO 8601 时间间隔 编写时间间隔值,PostgreSQL 提供了两种方式,如下所示:
ISO 8601 的设计符格式如下: 在上述格式中,时间间隔值必须以 P 开头,而 T 用于定义时间单位。 下表显示了 ISO 8601 时间间隔 单位缩写:
注意:M 可以是月或分钟,取决于它出现在 T 字母的前面还是后面。为了我们更好地理解,让我们看一个 ISO 8601 设计符 格式的示例。 5 年 4 个月 3 天 2 小时 1 分钟 1 秒 的时间间隔可以写成 ISO 8601 设计符格式。 并且 ISO 8601 的替代形式如下所示: 它也以 P 开头,T 分隔 了时间间隔值的 日期和时间 部分。 例如,5 年 4 个月 3 天 2 小时 1 分钟 1 秒 的 ISO 8601 替代形式 可以写成如下: PostgreSQL 时间间隔输出格式PostgreSQL 时间间隔值的输出格式可以通过 SET intervalstyle 命令设置,正如我们在下面的示例中看到的: PostgreSQL 有四种不同的输出格式,如下:
注意:PostgreSQL 默认使用 Postgres 样式来格式化时间间隔值。为了我们更好地理解,让我们看一个示例。 下面的命令用于以四种不同的输出格式显示 5 年 4 个月 3 天 2 小时 1 分钟 1 秒。 ISO_8601 输出格式在下面的命令中,我们将为上述时间间隔值 设置 intervalstyle 为 iso_8601。 输出 执行上述命令后,我们将得到以下结果,它表示 iso_8601 时间间隔输出格式。 ![]() postgres_verbose 输出格式在下面的命令中,我们将为上述时间间隔值 设置 intervalstyle 为 postgres_verbose。 输出 执行上述命令后,我们将得到以下结果,它显示 postgres_verbose 时间间隔输出格式。 ![]() Postgres 输出格式在下面的命令中,我们将为上述时间间隔值 设置 intervalstyle 为 Postgres。 输出 成功执行上述命令后,我们将得到以下结果,它显示 Postgres 时间间隔输出格式。 ![]() Sql_standard 输出格式在下面的命令中,我们将为上述时间间隔值 设置 intervalstyle 为 sql_standard。 输出 成功执行上述命令后,我们将得到以下结果,它表示 sql_standard 时间间隔输出格式。 ![]() 将 PostgreSQL 时间间隔转换为字符串我们可以使用 TO_CHAR() 函数将时间间隔值转换为字符串。 将 PostgreSQL 时间间隔转换为字符串的语法: TO_CHAR() 函数 以 时间间隔值 作为第一个参数,以 格式 作为第二个参数,并返回一个字符串,显示特定格式的时间间隔。 在下面的示例中,我们将使用 TO_CHAR() 函数,它将 PostgreSQL 时间间隔转换为字符串值。 输出 成功执行上述命令后,我们将得到以下结果: ![]() PostgreSQL 时间间隔相关运算符和函数时间间隔运算符 我们可以使用以下 +、-、* 等算术运算符 来获取时间间隔值。 为了我们更好地理解,让我们看下面的示例。 在下面的命令中,我们将使用 PostgreSQL 时间间隔数据类型 算术运算符 (+)。 输出 执行上述命令后,我们将得到如下结果: ![]() 在下面的命令中,我们将使用 PostgreSQL 时间间隔数据类型 算术运算符 (-)。 输出 执行上述命令后,我们将得到以下结果: ![]() 在下面的命令中,我们将使用 PostgreSQL 时间间隔数据类型 算术运算符 (*)。 输出 执行上述命令后,我们将得到以下结果: ![]() 从 PostgreSQL 时间间隔中提取数据我们可以使用 EXTRACT() 函数从时间间隔值中提取字段,例如 年、月、日等。 从 PostgreSQL 时间间隔中提取数据的语法: 在上述语法中,我们可以在 field 参数中使用 year、month、date、hour、minutes 等。 如果我们想从时间间隔中提取数据,extract 函数将返回一个双精度类型的值。 在下面的示例中,我们将使用 EXTRACT() 函数检索双精度值。 输出 成功执行上述命令后,我们将得到如下输出,显示 双精度值 的日期部分,如下所示: ![]() 调整 PostgreSQL 时间间隔值PostgreSQL 中有两个函数,justify_days 和 justify_hours,它们允许我们将 24 小时的时间间隔 视为 一天,并将 30 天的时间间隔 视为 一个月。 让我们看一个示例,以了解我们如何调整 PostgreSQL 时间间隔值。 在下面的命令中,我们将使用 justify_days 和 justify_hours 函数: 输出 执行上述命令后,我们将得到以下结果,它显示 30 天的时间间隔视为一个月,24 小时的时间间隔视为一天。 ![]() 此外,justify_interval 函数通过 justify_days 和 justify_hours 以及附加的符号修改来调整时间间隔值。 在下面的示例中,我们将使用 justifiy_interval 函数和 SELECT 命令。 输出 执行上述命令后,我们将得到以下输出: ![]() 概述在 PostgreSQL 时间间隔数据类型 部分,我们学习了以下主题:
下一主题PostgreSQL UUID |
我们请求您订阅我们的新闻通讯以获取最新更新。