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间隔值:
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秒:
和
ISO 8601 的替代形式如下:
P [ years-months-days ] [ T hours:minutes:seconds ]
,它也以
字母P和字母T 开头,该字母将间隔值的
时间和日期部分分开。
例如,
ISO 8601替代格式可以写为
5年4个月3天2小时1分1秒,,如下所示:
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 间隔输出格式:
对于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 间隔输出格式:
对于Postgres输出格式
在以下命令中,我们将上述间隔值
SET
intervalstyle 设置为
Postgres :
SET intervalstyle = 'postgres';
SELECT
INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
输出
成功执行上述命令后,我们将得到以下结果,该结果显示了
Postgres 间隔输出格式:
对于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 间隔输出格式:
对于Postgres输出格式
在以下命令中,我们将上述间隔值
SET
intervalstyle 设置为
Postgres :
SET intervalstyle = 'postgres';
SELECT
INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
输出
成功执行上述命令后,我们将得到以下结果,该结果显示了
Postgres 间隔输出格式:
对于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间隔修改为字符串
我们可以使用
TO_CHAR()函数将间隔值修改为字符串。
将PostgreSQL间隔修改为字符串的语法
TO_CHAR()函数将
第一个语句作为
一个间隔值,将另一个作为
格式 >并检索一个字符串,以特定格式显示间隔。
在下面的示例中,我们将使用TO_CHAR()函数,该函数将PostgreSQL间隔转换为字符串值:
SELECT
TO_CHAR(
INTERVAL '15h 15m 15s','HH24:MI:SS'
);
输出
成功执行上述命令后,我们将得到以下结果:
PostgreSQL与区间相关的运算符和函数
区间运算符
我们可以使用以下
+,-,*等算术运算符来获取间隔值。
让我们看下面的示例,以便我们更好地理解:
在以下命令中,我们将在PostgreSQL间隔数据类型的帮助下使用
算术运算符(+):
SELECT
INTERVAL '1h 50m' + INTERVAL '5m';
输出
在执行上述命令时,我们将获得以下结果,如下所示:
在以下命令中,我们将借助PostgreSQL interval数据类型使用
算术运算符(-):
SELECT
INTERVAL '3h 50m'-INTERVAL '30m';
输出
在执行上述命令时,我们将得到以下结果:
在以下命令中,我们将借助PostgreSQL interval数据类型使用
算术运算符(*):
SELECT
400 * INTERVAL '5 minute';
输出
在执行上述命令时,我们将得到以下结果:
从PostgreSQL间隔中提取数据
我们可以使用
EXTRACT()函数来从间隔值中提取字段,例如
年,月,日等。
从PostgreSQL间隔中提取数据的语法
EXTRACT(field FROM interval)
在以上语法中,我们可以在字段参数中使用
年,月,日,时,分等。
提取如果要从间隔中提取,则函数返回双精度类型的值。
在下面的示例中,我们将使用
EXTRACT()函数检索双精度值。
SELECT
EXTRACT (MINUTE
FROM
INTERVAL '2 hours 30 minutes'
);
输出
成功执行以上命令后,我们将获得以下输出,其中显示
双精度日期部分值,如下所示:
调整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小时间隔:
除此之外,
justify_interval 函数借助
justify_days和justify_hours 并加上符号修改来调节间隔值:
在以下示例中,我们将在SELECT命令中使用justifiy_interval函数:
SELECT
justify_interval(interval '6 months -1 hour');
输出
执行上述命令后,我们将获得以下输出:
概述
在
PostgreSQL Interval数据类型部分中,我们学习了以下主题:
PostgreSQL间隔数据类型用于存储和部署以年,月,日,小时,分钟,秒为单位的时间段。
我们使用了不同的 Interval函数,例如 NOW(),TO_CHAR()来增强特定表中的间隔值。
PostgreSQL间隔值具有输入和输出间隔格式。
我们可以借助 justify_days(),justify_hours,justify_interval()函数来调整PostgreSQL间隔值。
我们可以使用 EXTRACT()函数提取间隔字段值。