PostgreSQL教程

PostgreSQL 间隔

在本节中,我们将了解 PostgreSQL间隔数据类型的工作原理,并且还将看到 示例( 间隔数据类型)。并且最常用的间隔 函数,例如 NOW(),TO_CHAR(),EXTRACT(),justify_days( ),justify_hours(),justify_interval()。 PostgreSQL间隔值的 输入和输出格式。

什么是PostgreSQL间隔数据类型?

在PostgreSQL中, Interval 是另一种数据类型,用于存储和部署 年,月,日,小时,分钟,秒,中的时间。 >等。 月和日值是 整数值,而 秒的字段可以是 分数值。
PostgreSQL间隔数据类型值涉及 16字节存储大小, ps,用于存储可接受范围为- 178000000年至178000000 年的时间段。
注意: 第二个字段中采用的小数位数称为精度p。

PostgreSQL Interval数据类型的语法

PostgreSQL Interval数据类型的语法如下:
@ interval [ fields ] [ (p) ]   
在以上语法中,我们具有以下参数:
参数 说明
字段 field参数用于显示时间。
p P用于显示精度值。
@ 我们可以忽略@参数,因为它是可选参数。
让我们看一个示例示例,以便我们更好地理解如何使用 带有 @参数和不带有@参数的时间间隔值:
@interval '6 months before';
@interval '2 hours 30 minutes';
OR
interval '6 months before';
interval '2 hours 30 minutes';
注意: 我们可以使用上述两个语句,因为它们彼此对应。此外,间隔值可以具有可选精度值p,允许范围从0到6、

PostgreSQL间隔数据类型示例

让我们看一个示例示例,以了解 PostgreSQL间隔数据类型
在下面的示例中,我们将尝试在 去年的当前时间之前找到 2小时30分钟之前的时间;我们将使用以下命令:
SELECT
    now(),
    now()-INTERVAL '6 months 2 hours 30 minutes' 
             AS "2 hours 30 minutes before last year";
输出
执行上面的命令后,我们将获得以下输出,该输出显示 去年2小时30分钟前:
PostgreSQL Interval
我们已经看到了间隔数据类型的主要示例并了解了它的工作原理。现在,我们将看到 间隔值的输入和输出格式。
首先,我们将了解输入格式的 PostgreSQL间隔值:

PostgreSQL间隔输入格式

在PostgreSQL中,我们具有以下 详细语法,可以帮助我们编写间隔值:
quantity unit [quantity unit...] [direction]
我们有以下参数,用在以上语法中:
等符号
参数 说明
数量 数量是一个数字,它也接受 + -
单位 单位可以是任何千年,世纪,十年,年,月,周,日,小时,分钟,秒,毫秒,微秒,也可以是缩写以下 y,m,d等,复数形式可以是月,日
方向 direction 参数可以是 ago或空字符串。
注意: 以上语法也用于间隔输出格式,称为postgres_verbose。
在下面的示例中,我们将显示一些使用 详细语法的时间间隔值:
INTERVAL '1 year 5 months 5 days';
INTERVAL '1 weeks ago';

ISO 8601间隔格式

除了上面的详细语法外,还可以借助 ISO 8601-时间间隔来写入间隔值为我们提供了两种方式,如下所示:
指示符格式 其他格式
ISO 8601的指示符格式如下:
P quantity unit [ quantity unit ...] [ T [ quantity unit ...]]
在上述格式中,必要的时间间隔值以 字母P 开头,并且 字母T 用于定义 一天中的时间
下表显示了 ISO 8601间隔单位缩写:
缩写 说明
Y 年份
M 月(日期部分)
W
D
H 小时
M 分钟(时间部分)
S 第二
注意: 根据它在字母T之前还是之后,M可以是几个月或几分钟。
让我们看一下 ISO 8601指示符格式的示例,以便我们更好地理解:
ISO 8601指示符格式的写作间隔为 5年4个月3天2小时1分1秒:
P5Y4M3DT2H1M1S
ISO 8601 的替代形式如下:
P [ years-months-days ] [ T hours:minutes:seconds ]
,它也以 字母P和字母T 开头,该字母将间隔值的 时间和日期部分分开。
例如, ISO 8601替代格式可以写为 5年4个月3天2小时1分1秒,,如下所示:
P0005-04-03T02:01:01

PostgreSQL间隔输出格式

可以通过 SET intervalstyle 设置间隔值的PostgreSQL间隔输出格式命令:
SET intervalstyle = 'iso_8601';
PostgreSQL包含四种不同的输出格式,例如:
iso_8601 postgres_verbose Postgres sql标准
注意: 要设置间隔值的格式,PostgreSQL默认使用Postgres样式。
让我们看一个更好理解的示例:
以下命令用于显示 5年4个月3天2小时1分钟1秒以四种不同的输出格式:

对于ISO_8601输出格式

在以下命令中,我们将 SET intervalstyle 作为上述间隔值的 iso_8601 :
SET intervalstyle = 'iso_8601';
SELECT
INTERVAL '5 years 4 months 3 days 2 hours 1 minute 1 second';
输出
执行上述命令后,我们将得到以下结果,该结果表示 iso_8601 间隔输出格式:
PostgreSQL Interval

对于postgres_verbose输出格式

在下面命令,我们将 intervalstyle 设置为 postgres_verbose 作为上述间隔值:
SET intervalstyle = 'postgres_verbose';
SELECT
INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
输出
执行上述命令后,我们将得到以下结果,该结果显示了 postgres_verbose 间隔输出格式:
PostgreSQL Interval

对于Postgres输出格式

在以下命令中,我们将上述间隔值 SET intervalstyle 设置为 Postgres :
SET intervalstyle = 'postgres';
SELECT
INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
输出
成功执行上述命令后,我们将得到以下结果,该结果显示了 Postgres 间隔输出格式:
PostgreSQL Interval

对于Sql_standard输出格式

在下面命令,我们将上述间隔值 SET intervalstyle 设置为 sql_standard :
SET intervalstyle = 'sql_standard';
SELECT
INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
输出
执行上述命令后,我们将得到以下结果,该结果显示了 postgres_verbose 间隔输出格式:
PostgreSQL Interval

对于Postgres输出格式

在以下命令中,我们将上述间隔值 SET intervalstyle 设置为 Postgres :
SET intervalstyle = 'postgres';
SELECT
INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
输出
成功执行上述命令后,我们将得到以下结果,该结果显示了 Postgres 间隔输出格式:
PostgreSQL Interval

对于Sql_standard输出格式

在下面命令,我们将上述间隔值 SET intervalstyle 设置为 sql_standard :
SET intervalstyle = 'sql_standard';
SELECT
INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
输出
成功执行以上命令后,我们将得到以下结果h表示 sql_standard 间隔输出格式:
PostgreSQL Interval

将PostgreSQL间隔修改为字符串

我们可以使用 TO_CHAR()函数将间隔值修改为字符串。
将PostgreSQL间隔修改为字符串的语法
TO_CHAR(interval,format)
TO_CHAR()函数第一个语句作为 一个间隔值,将另一个作为 格式 >并检索一个字符串,以特定格式显示间隔。
在下面的示例中,我们将使用TO_CHAR()函数,该函数将PostgreSQL间隔转换为字符串值:
SELECT
TO_CHAR( 
INTERVAL '15h 15m 15s','HH24:MI:SS'
    );
输出
成功执行上述命令后,我们将得到以下结果:
PostgreSQL Interval

PostgreSQL与区间相关的运算符和函数

区间运算符
我们可以使用以下 +,-,*等算术运算符来获取间隔值。
让我们看下面的示例,以便我们更好地理解:
在以下命令中,我们将在PostgreSQL间隔数据类型的帮助下使用 算术运算符(+):
SELECT 
INTERVAL '1h 50m' + INTERVAL '5m';
输出
在执行上述命令时,我们将获得以下结果,如下所示:
PostgreSQL Interval
在以下命令中,我们将借助PostgreSQL interval数据类型使用 算术运算符(-):
SELECT
INTERVAL '3h 50m'-INTERVAL '30m'; 
输出
在执行上述命令时,我们将得到以下结果:
PostgreSQL Interval
在以下命令中,我们将借助PostgreSQL interval数据类型使用 算术运算符(*):
SELECT
400 * INTERVAL '5 minute';
输出
在执行上述命令时,我们将得到以下结果:
PostgreSQL Interval

从PostgreSQL间隔中提取数据

我们可以使用 EXTRACT()函数来从间隔值中提取字段,例如 年,月,日等
从PostgreSQL间隔中提取数据的语法
EXTRACT(field FROM interval)
在以上语法中,我们可以在字段参数中使用 年,月,日,时,分等。
提取如果要从间隔中提取,则函数返回双精度类型的值。
在下面的示例中,我们将使用 EXTRACT()函数检索双精度值。
SELECT
EXTRACT (MINUTE
FROM
INTERVAL '2 hours 30 minutes'
    );
输出
成功执行以上命令后,我们将获得以下输出,其中显示 双精度日期部分值,如下所示:
PostgreSQL Interval

调整PostgreSQL间隔值

我们在PostgreSQL中有两个功能, justify_days和justify_hours ,这使我们可以将 24小时间隔修改为 一天。 strong>和 30天的间隔视为 一个月
让我们看一个示例,以了解我们如何调整PostgreSQL间隔值:
在以下命令中,我们将使用 justify_days和justify_hours函数:
SELECT
    justify_days(INTERVAL '30 days'),
    justify_hours(INTERVAL '24 hours');
输出
执行上述命令后,我们将得到以下结果,该结果将 30天的间隔显示为一个月一天的24小时间隔:
PostgreSQL间隔
除此之外, justify_interval 函数借助 justify_days和justify_hours 并加上符号修改来调节间隔值:
在以下示例中,我们将在SELECT命令中使用justifiy_interval函数:
SELECT
justify_interval(interval '6 months -1 hour');
输出
执行上述命令后,我们将获得以下输出:
PostgreSQL Interval

概述

PostgreSQL Interval数据类型部分中,我们学习了以下主题:
PostgreSQL间隔数据类型用于存储和部署以年,月,日,小时,分钟,秒为单位的时间段。 我们使用了不同的 Interval函数,例如 NOW(),TO_CHAR()来增强特定表中的间隔值。 PostgreSQL间隔值具有输入和输出间隔格式。 我们可以借助 justify_days(),justify_hours,justify_interval()函数来调整PostgreSQL间隔值。 我们可以使用 EXTRACT()函数提取间隔字段值。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4