📅  最后修改于: 2023-12-03 15:18:38.976000             🧑  作者: Mango
在 PostgreSQL 中计算两个日期之间的天数差异是一个常见操作。本文将介绍如何使用 SQL 在 PostgreSQL 中计算两个日期之间的天数差异。
使用 PostgreSQL 内置函数 age()
可以计算两个日期之间的时间差异(以年、月、天表示)。然而,它返回的结果是一个间隔类型,而不是一个简单的整数。
为了得到两个日期之间的天数差异,我们需要执行以下步骤:
age()
函数计算两个日期之间的间隔。以下是计算两个日期之间的天数差异的 SQL 代码:
SELECT extract(epoch from age(date1, date2))/86400::int
其中,date1
和 date2
是需要计算差异的日期(可以是列名或常量值),extract(epoch from age(date1, date2))
返回以秒为单位的间隔时间,再除以 86400(一天的秒数)取整即可得到两个日期之间的天数差异。
假设有以下表格 test_table
:
CREATE TABLE test_table (
name VARCHAR(20),
start_date DATE,
end_date DATE
);
INSERT INTO test_table VALUES
('Project1', '2021-01-01', '2021-01-31'),
('Project2', '2022-01-01', '2022-02-28');
要计算每个项目的持续天数(即 end_date - start_date
),可以执行以下 SQL 代码:
SELECT name, extract(epoch from age(end_date, start_date))/86400::int AS duration
FROM test_table;
输出结果如下:
| name | duration | |------|----------| | Project1 | 30 | | Project2 | 58 |
以上代码将计算每个项目的持续天数,并将结果放入名为 duration
的列中。
计算两个日期之间的天数差异是 PostgreSQL 中常见的操作之一。可以使用 age()
函数和参考代码中的 SQL 代码轻松地完成此操作。