如何仅计算 postgres sql 查询中两个日期之间的天数。

how to calculate only days between two dates in postgres sql query .

假设我给了两个日期,如果相差一个月那么应该显示为30 days.Even个月也需要转换成天 我试过使用 age( date,now()::timestamp without time zone) 但它给出了月-日-年格式。例如:10 mons 24 days 13:57:40.5265.But 我需要以下方式。 例如,如果有两个月的差异,那么我需要输出 60 天。

两者都会给出那个结果。

select make_interval(days => ((extract(epoch from '2016-04-10'::date) - extract(epoch from '2016-02-10'::date))/(60*60*24))::integer)::text;

select format('%1$s days', ((extract(epoch from '2016-04-10'::date) - extract(epoch from '2016-02-10'::date))/(60*60*24))::integer);

不要将 age() 函数用于 date/time 算术。它只有 returns "symbolic" results(这对于人类表示来说已经足够好了,但对于 date/time 计算几乎没有意义;与标准差相比)。

标准 difference operator (-) returns datetimestamptimestamp with time zone 的基于天的结果(前 returns天为int,后两者return天为intervals):

您可以使用 extract() 函数从基于天的间隔中提取天数:

select current_date - '2017-01-01',
       extract(day from now()::timestamp - '2017-01-01 00:00:00'),
       extract(day from now()            - '2017-01-01 00:00:00Z');

http://rextester.com/RBTO71933