如何从PostgreSQL表中的时间戳中提取月份和年份

时间:2020-09-05 12:04:23

标签: sql postgresql

使用PostgreSQL,同时使用AGE()函数通过查询在我的表中显示出生日期起的年龄

SELECT date_of_birth, AGE(NOW(), date_of_birth) AS age FROM person;

有以下内容,result

我只想从时间戳中选择年份和月份,所以结果就像“ 1 year 3 mons”,

尝试使用EXTRACT(),一次只输出一个字段,

SELECT date_of_birth, EXTRACT(YEAR FROM AGE(NOW(), date_of_birth)) AS age FROM person;

和TO_CHAR()

SELECT date_of_birth, TO_CHAR(AGE(NOW(), date_of_birth), 'YY-MM') AS age FROM person;

但是结果不是所需的格式,任何人都可以解释如何正确使用上述方法或任何其他方法来获得所需的结果。

1 个答案:

答案 0 :(得分:1)

您可以使用TO_CHAR()设置间隔格式:

TO_CHAR(AGE(NOW(), date_of_birth), 'YY "Year" MM "month"') AS age

但是,一种通俗易懂的解决方案是分别构建零件:

   CONCAT_WS(' ',
             (CASE WHEN EXTRACT(YEAR FROM v.age) = 0 THEN NULL
                   WHEN EXTRACT(YEAR FROM v.age) = 1 THEN '1 year'
                   ELSE EXTRACT(YEAR FROM v.age) || ' years'
              END),
             (CASE WHEN EXTRACT(MONTH FROM v.age) = 1 THEN '1 month'
                   ELSE EXTRACT(MONTH FROM v.age) || ' months'
              END)
           ) as age

处理“ 1年”与“ 2年”之类的事情。

Here是db <>小提琴。

相关问题