玩转PostgreSQL(六):Date Functions(方法)

PostgreSQL Date Functions

概览

如果你想节省时间,直接看此图

玩转PostgreSQL(六):Date Functions(方法)

以下说明AGE()方法的语法:

AGE(timestamp,timestamp);

AGE()方法入参是两个timestamp值。它用第一个参数中减第二个参数,并返回一个间隔结果。

请参阅以下示例:

SELECT AGE('2017-01-01','2011-06-24');

输出如下

          AGE
-----------------------
 5 years 6 mons 7 days
(1 row)

如果要将当前日期作为第一个参数,可以使用以下形式的AGE()方法声明:

AGE(timestamp);

例如,如果某人的出生日期2000-01当前日期是2022-10-24,使用AGE 方法计算,他/她的年龄将是:

SELECT current_date, 
       AGE(timestamp '2000-01-01');
    date    |           AGE
------------+-------------------------
 2022-10-24 | 22 years 10 mons 23 days
(1 row)

?PostgreSQL AGE() 方法示例

我们将使用如下表结构作为演示表

玩转PostgreSQL(六):Date Functions(方法)

假设我们想要查询入职时间最长的十位员工的信息,我们可以借助AGE()方法来查询计算

SELECT staff_id,
         name,
         AGE(join_date) AS duration
FROM staff
WHERE join_date IS NOT NULL
ORDER BY  duration DESC 
LIMIT 10;

在上面的代码中中,使用AGE()函数计算工作年限,基于当前时间和join_date列来计算。

代码输出如下:

 staff_id  | name  | duration
-----------+-------+------------------------
 1337      |Daff   | 49 years 5 mons 17 days
 9353      |ZZr    | 36 years 9 mons 26 days
 3         |Furry  | 14 years 3 mons 20 days
 77        |Tom    | 13 years 11 mons 26 days
 15        |JAck   | 13 years 11 mons 5 days
 773       |Yagao  | 5 years 6 mons 24 days
 417       |Hope   | 4 years 10 mons 24 days
 1242      |Missing| 4 years 7 mons 24 days
 434       |369    | 3 years 11 mons 5 days
 838       |Kanavi | 3 years 11 mons 5 days

(10 rows)