PostgreSQL date_bin() 函数使用指南

PostgreSQL date_bin() 函数将指定的时间戳截断到最近的指定的时间间隔的开始。

date_bin() 语法

这是 PostgreSQL date_bin() 函数的语法:

date_bin(stride INTERVAL, source TIMESTAMP, origin TIMESTAMP) -> timestamp

参数

stride
必需的。 它指示了要使用的时间间隔。比如 15 minutes 意味着以 15 分钟为一个间隔,结果的时间向间隔的时间点靠拢,即: 0 分, 15 分, 30 分 和 45 分。
source
必需的。 要处理的时间。
origin
必需的。如果它带有了时间,那么时间部分将会作为偏移量添加到结果时间上。

返回值

PostgreSQL date_bin() 函数返回一个时间戳,它是由 stride 参数指定的最近的间隔的开始。

date_bin() 示例

本示例展示了如何使用 PostgreSQL date_bin() 函数将时间截断为以 10 分钟为间隔的时间的开始。

SELECT date_bin('10 minutes', TIMESTAMP '2022-05-16 12:41:13', TIMESTAMP '2001-01-01');
      date_bin
---------------------
 2022-05-16 12:40:00

这里,由于使用了 10 minutes 作为时间间隔,那么结果时间中可能的分包括: 0 分,10 分,20 分,30 分,40 分,50 分。 41 分所在的间隔的开始就是 40 分。

您也可以使用 15 分钟为间隔,例如:

SELECT date_bin('15 minutes', TIMESTAMP '2022-05-16 12:41:13', TIMESTAMP '2001-01-01');
      date_bin
---------------------
 2022-05-16 12:30:00

这里,由于使用了 15 minutes 作为时间间隔,那么结果时间中可能的分包括: 0 分,15 分,30 分,45 分。

如果 origin 参数带有时间部分,则时间部分作为偏移量作为结果时间的偏移量。比如:

SELECT date_bin('15 minutes', TIMESTAMP '2022-05-16 12:41:13', TIMESTAMP '2001-01-01 00:05:02');
      date_bin
---------------------
 2022-05-16 12:35:02

这里, 05:02 作为偏移量累加到 2022-05-16 12:30:00 上,结果为: 2022-05-16 12:35:02

同样,您也可以使用 1 天作为间隔,比如:

SELECT date_bin('1 day', TIMESTAMP '2022-05-16 12:41:13', TIMESTAMP '2001-01-01');
      date_bin
---------------------
 2022-05-16 00:00:00

还有,

SELECT date_bin('1 day', TIMESTAMP '2022-05-16 12:41:13', TIMESTAMP '2001-01-01 01:05:02');
      date_bin
---------------------
 2022-05-16 01:05:02