Sql 如何计算以年和月为单位的时间段

Sql 如何计算以年和月为单位的时间段,sql,oracle,Sql,Oracle,我希望能够得到客户注册的时间,到目前为止,我只得到了月份,但我希望得到年份和月份。可能有一个函数我没有使用,它可以计算出几年和几个月,而不仅仅是几个月。 谢谢 除以12。但无需将sysdate转换为日期: SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE(REGISTER_DATE, 'DD-MON-YYYY')) / 12 AS "Registered for" FROM A3_CUSTOMER WHERE CUSTOMER_ID = 'C991

我希望能够得到客户注册的时间,到目前为止,我只得到了月份,但我希望得到年份和月份。可能有一个函数我没有使用,它可以计算出几年和几个月,而不仅仅是几个月。 谢谢


除以12。但无需将
sysdate
转换为日期:

SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE(REGISTER_DATE, 'DD-MON-YYYY')) / 12 AS "Registered for"
FROM A3_CUSTOMER
WHERE CUSTOMER_ID = 'C99166';
这返回十进制年份。要转换为年和月:

SELECT (FLOOR(MONTHS_BETWEEN(SYSDATE, TO_DATE(REGISTER_DATE, 'DD-MON-YYYY')) / 12) || ' Years and ' ||
        MOD(FLOOR(MONTHS_BETWEEN(SYSDATE, TO_DATE(REGISTER_DATE, 'DD-MON-YYYY')), 12) || ' Months'
       ) AS "Registered for"
FROM A3_CUSTOMER
WHERE CUSTOMER_ID = 'C99166';
如果
register\u date
存储为日期(应该是),则也不要转换该日期:

SELECT MONTHS_BETWEEN(SYSDATE, REGISTER_DATE) / 12 AS "Registered for"
FROM A3_CUSTOMER
WHERE CUSTOMER_ID = 'C99166';

您可以使用以下时间间隔的月份:

Trunc(MONTHS_BETWEEN(SYSDATE, REGISTER_DATE)/ 12) as year,
Trunc(Mod(MONTHS_BETWEEN(SYSDATE, REGISTER_DATE), 12))  as month

注册日期的数据类型是什么?
Trunc(MONTHS_BETWEEN(SYSDATE, REGISTER_DATE)/ 12) as year,
Trunc(Mod(MONTHS_BETWEEN(SYSDATE, REGISTER_DATE), 12))  as month