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