这只是出现在工作中,我想知道这个功能的基本原理是什么
function Description
age(timestamp) Subtract from current_date (at midnight)
有人问为什么从午夜减去给定的日期?而不是从now()中减去它?有原因吗?或者只是因为?
答案 0 :(得分:0)
两种形式的age()
都将timestamp
作为参数,而不是date
。如果您提供date
,则会在午夜将其转换为相应的timestamp
。
单参数表单计算今天午夜的年龄,这显然是最有用的默认值:
timestamp
,则会获得一段天数,加上午夜时差。date
,则会有一段时间间隔。这些是稳定的,易于使用的,易于理解的结果
如果年龄将根据now()
计算,则不会是这些。您始终可以使用双参数表单明确地执行此操作。
因此,这些表达式产生相同的结果:
SELECT age(now())
, age(now()::date, now())
, age(date_trunc('day', now()), now());