PostgreSQL DATEDIFF 函数

Joy Idialu 2023年1月30日 2022年5月14日
  1. 在 PostgreSQL 中使用 EXTRACT 函数来获取日期差值
  2. 使用 DATE_PART 函数获取 PostgreSQL 中的日期差异
PostgreSQL DATEDIFF 函数

与 SQL Server 不同,PostgreSQL 没有内置的 DATEDIFF 函数来计算日期之间的差异。但是,可以使用包含 PostgreSQL 提供的其他函数的表达式来获得日期差异。

本教程讨论了计算 PostgreSQL 中日期之间天数差异的方法。

在 PostgreSQL 中使用 EXTRACT 函数来获取日期差值

语法:

EXTRACT(field, source)

field 可以是年、月、日等。source 类型可以是时间戳、时间或间隔。

如果表的列是日期类型,则可以将其类型转换为时间戳。

可以使用 EXTRACT 函数计算天数差异,如下例所示。

SELECT EXTRACT(DAY FROM '2022-01-15 11:40:00'::timestamp - '2021-11-03 13:10:00'::timestamp)

输出:

 extract
---------
   72

请注意,PostgreSQL 将返回两个日期之间的完整天数,并考虑小时分钟的差异。如果小时、分钟和秒没有差异,则返回不同的结果,如下例所示。

SELECT EXTRACT(DAY FROM '2022-01-15 00:00:00'::timestamp - '2021-11-03 00:00:00'::timestamp)

输出:

 extract
---------
   73

上面示例中使用的日期与将日期类型字段转换为时间戳时的日期相同。

使用 DATE_PART 函数获取 PostgreSQL 中的日期差异

语法:

DATE_PART('field', source)

field 可以是年、月、日等。它必须是字符串类型。

也可以使用 DATE_PART 函数计算天数差异,如下面的命令。

SELECT DATE_PART('day', '2022-01-15 11:40:00'::timestamp - '2021-11-03 13:10:00'::timestamp);

输出:

 date_part
-----------
    72