在我的选择中,我有这个子选择:
(SELECT CAR FROM CAR_OV_CARNEW
WHERE CARFK = table1.id AND carold = 'CAR_SHARE_OLD') CPEND
给出了以下coloumn作为输出:
CPEND
-----
11.07.2011
15.05.2014
14.08.2016
我需要的是MONTHS
与sysdate
到CPEND
的区别。
我试过MONTHS_BETWEEN
,但它不适合我
最终结果应为:
CPEND (DATE) DIFFMONTHS_TEMP
----- -----
11.07.2011 46
15.05.2014 12
14.08.2016 -14
我用这句话试了一下:
SELECT MONTHS_BETWEEN (TO_DATE(sysdate),
TO_DATE((SELECT CAR FROM CAR_OV_CARNEW
WHERE CARFK = table1.id AND carold = 'CAR_SHARE_OLD') CPEND,'MM-DD-YYYY') ) "Months"
FROM table1;
答案 0 :(得分:3)
规范方法是:
SELECT (SELECT MONTHS_BETWEEN(SYSDATE, CAR)
FROM CAR_OV_CARNEW
WHERE CARFK = table1.id AND carold = 'CAR_SHARE_OLD'
)
如果CAR
存储为字符串而非日期,则需要将其转换为:
SELECT (SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE(CAR, 'DD.MM.YYYY'))
FROM CAR_OV_CARNEW
WHERE CARFK = table1.id AND carold = 'CAR_SHARE_OLD'
)
此外,MONTHS_BETWEEN()
返回数字类型。如果你想要它作为一个整数(由你的结果建议),那么添加逻辑来转换,取楼层,上限或舍入值。