PostgreSQL DATEDIFF 函数
Joy Idialu
2023年1月30日
2022年5月14日
与 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