用 to_char 和 to_number 减去两年

subtracting two years with to_char and to_number

我需要减去两个日期。首先,我使用 to_char 将日期字段转换为年份,然后使用 to_number 转换为数字。但是我在减去两年时在查询中遇到错误:

to_char((order date),'yyyy')
to_char((beginning of the year),'yyyy')

我尝试使用

转换为数字
to_number(to_char((order date),'yyyy'),'9999')
to_number(to_char((beginning of the year),'yyyy'),'9999')

您可以使用EXTRACT函数:

EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM order_date)

或者,如果你想得到实际的差异并衡量整年(占月而不仅仅是年),那么你可以使用 MONTHS_BETWEEN 除以 12 并向下取整:

FLOOR(MONTHS_BETWEEN(TRUNC(SYSDATE, 'YYYY'), order_date) / 12)

使用extract;它比你正在做的更简单:

select extract(year from order_date) - extract(year from trunc(sysdate, 'yyyy')) as result
from some_table