首页 > 解决方案 > 如何在sql查询中将年月显示为1Y2M

问题描述

我有一个查询来检索两个日期之间的月数 -

select Trunc(Months_between(Trunc(SYSDATE), CUR_EFF_DATE ) / 12, 1) 
from xyz

现在此查询返回数据,如 - 0.1、1.5 等。我希望查询给出 1 年 2 个月、1 个月等结果。如何实现?

标签: sqloracledateintervalsdate-formatting

解决方案


我会看文档

区间数据类型没有格式模型。因此,要调整它们的呈现方式,就必须将字符函数组合起来,EXTRACT并将组件连接起来。

下面是一个示例,它看起来很像您的用例,可以进行如下调整:

select 
    extract(year from (sysdate - cur_eff_date) year to month)
    || ' year(s) '
    || extract(month from (sysdate - cur_eff_date) year to month)
    || ' month(s)' 
    as date_diff
from xyz

推荐阅读