postgresql age(timestamp)函数语义背后的基本原理

时间:2012-07-18 22:07:03

标签: postgresql

这只是出现在工作中,我想知道这个功能的基本原理是什么

function        Description
age(timestamp)  Subtract from current_date (at midnight)

有人问为什么从午夜减去给定的日期?而不是从now()中减去它?有原因吗?或者只是因为?

1 个答案:

答案 0 :(得分:0)

两种形式的age()都将timestamp作为参数,而不是date。如果您提供date,则会在午夜将其转换为相应的timestamp

单参数表单计算今天午夜的年龄,这显然是最有用的默认值:

  • 如果您提供timestamp,则会获得一段天数,加上午夜时差。
  • 如果您提供date,则会有一段时间间隔。

这些是稳定的,易于使用的,易于理解的结果 如果年龄将根据now()计算,则不会是这些。您始终可以使用双参数表单明确地执行此操作。

因此,这些表达式产生相同的结果:

SELECT age(now())
     , age(now()::date, now())
     , age(date_trunc('day', now()), now());