PostgreSQL 教程: make_interval 函数

九月 22, 2024

摘要:在本教程中,您将学习如何使用 PostgreSQL make_interval()函数,从间隔的组成部分创建一个间隔值。

目录

PostgreSQL make_interval 函数简介

make_interval()函数允许您从年、月、周、天、小时、分钟和秒创建一个间隔值

下面是make_interval()函数的语法:

MAKE_INTERVAL ( [ years int [, months int [, weeks int [, days int [, hours int [, mins int [, secs double precision ]]]]]]] )  interval

在此语法中:

  • years是表示年数的整数。
  • months是表示月数的整数。
  • weeks是表示周数的整数。
  • days是表示天数的整数。
  • hours是表示小时数的整数。
  • mins是表示分钟数的整数。
  • secs是表示秒数的双精度数字。

所有这些参数都是可选的,默认为零。

make_interval()函数返回一个间隔类型的值。

除了make_interval()函数之外,您还可以使用INTERVAL字面语法来创建一个间隔值:

INTERVAL 'X years Y months Z days W hours V minutes U seconds'

INTERVAL字面语法允许您,通过在单个字符串中指定所有组成部分,来创建一个间隔值。它适用于创建静态或预定义的间隔。

另一方面,make_interval()函数提供了单独指定每个组成部分的灵活性,非常适合动态创建一个间隔值。例如,您可以使用make_interval()函数根据表中存储的值创建一个间隔值。

PostgreSQL make_interval 函数示例

让我们来探索一些使用make_interval()函数的示例。

1) 基础 make_interval 函数示例

下面的示例使用make_interval()函数,创建一个表示 1 年、2 个月、3 天和 4 小时的间隔值:

SELECT
  MAKE_INTERVAL(
    years => 3, months => 6, days => 15, hours => 4
  );

输出:

          make_interval
---------------------------------
 3 years 6 mons 15 days 04:00:00
(1 row)

2) 以默认值使用 make_interval 函数

make_interval()函数的所有参数都是可选的,默认为零。例如,下面的语句创建一个间隔零值:

SELECT MAKE_INTERVAL();

输出:

 make_interval
---------------
 00:00:00
(1 row)

3) 对表数据使用 make_interval 函数

首先,创建一个新表,名为time_data

CREATE TABLE time_data (
    id SERIAL PRIMARY KEY,
    year INTEGER,
    month INTEGER,
    day INTEGER,
    hour INTEGER,
    minute INTEGER,
    second INTEGER
);

第二步,向 time_data 表中插入一些行

INSERT INTO time_data (year, month, day, hour, minute, second)
VALUES
    (1, 3, 25, 10, 0, 0),
    (2, 2, 25, 11, 30, 0),
    (3, 1, 25, 13, 15, 0)
RETURNING *;

输出:

 id | year | month | day | hour | minute | second
----+------+-------+-----+------+--------+--------
  1 |    1 |     3 |  25 |   10 |      0 |      0
  2 |    2 |     2 |  25 |   11 |     30 |      0
  3 |    3 |     1 |  25 |   13 |     15 |      0
(3 rows)

第三步,使用make_interval()函数,由time_data表中存储的数据创建间隔值:

SELECT 
  MAKE_INTERVAL(
    year, month, 0, day, hour, minute, second
  ) AS interval_data 
FROM 
  time_data;

输出:

          interval_data
---------------------------------
 1 year 3 mons 25 days 10:00:00
 2 years 2 mons 25 days 11:30:00
 3 years 1 mon 25 days 13:15:00
(3 rows)

总结

使用make_interval()函数,从提供的组成部分(如年、月、天、小时、分钟和秒)构造一个间隔值。

了解更多

PostgreSQL 教程:日期函数

PostgreSQL 文档:时间/日期函数和操作符