PostgreSQL:如何在输出中更改年龄格式

时间:2016-04-28 11:56:35

标签: sql postgresql-9.4

我在患者表中有 patient_age列,该列中的年龄格式将如下所示,

10D8M45Y 

(表示 10 D ays 8 M onths 45 ÿ耳)

我需要一个Postgresql Query,可以输出这样的输出,

45 Years 8 Months 10 Days

谢谢。

2 个答案:

答案 0 :(得分:1)

该列中的年龄格式,例如'YY“ Years” mm“ Months” DD“ Days”。

SELECT  TO_CHAR(age(current_date, '2017-04-17 00:00:00.0'), 'YY "Years" mm "Months" DD "Days"') as length_of_service

答案 1 :(得分:0)

如上所述,您希望像这样计算查询时的年龄...

SELECT extract(year from AGE(end_date, NOW()))||' Years '||
    extract(month from AGE(end_date, NOW()))||' Months '||
    extract(day from AGE(end_date, NOW()))||' Days '||
    extract(hour from AGE(end_date, NOW()))||' Hours '||
    extract(minute from AGE(end_date, NOW()))||' Minutes' as formatted_age
FROM my_table

可能是因为您正在处理一些已硬编码到字段中的内容。

SELECT
    extract(DAY FROM INTERVAL '10D8M45Y') || ' days ' ||
    extract(MONTH FROM CAST(REPLACE('10D8M45Y', 'M', 'Mon') AS INTERVAL)) || ' months ' ||
    extract(YEAR FROM INTERVAL '10D8M45Y') || ' years ';