Oracle日期选择

时间:2016-02-11 07:01:49

标签: sql oracle date

下面给出的是我的Loan_Details表。

INST_MONTH  START_AMOUNT
---------       ------------
17-JUN-16           10500
11-FEB-16           4500
11-MAR-16            4125
11-APR-16           3750
11-MAY-16           3375
11-JUN-16           3000
11-JUL-16           2625
11-AUG-16           2250
11-SEP-16           1875
11-OCT-16           1500
11-NOV-16           1125
11-DEC-16           750
11-JAN-17           375

我的查询是

select INST_MONTH 
from loan_details 
where to_char(INST_MONTH,'MM- YYYY') > to_char(TO_DATE('9/11/2016','MM/DD/yyyy'),'MM-YYYY')

当我需要选择大于11-OCT-2016的所有月份时,它总是返回

INST_MONTH
---------
17-OCT-15
17-NOV-15
17-DEC-15
11-OCT-16
11-NOV-16
11-DEC-16

为什么我错过11-JAN-17

(目前仅考虑月份和年份)

1 个答案:

答案 0 :(得分:1)

您错误地使用Dateto_char列与字符匹配进行了比较。

您的查询应该是:

select INST_MONTH from loan_details
 where INST_MONTH > TO_DATE('9/11/2016','MM/DD/yyyy')

只有月份和年份比较,您可以使用:

select INST_MONTH from loan_details
 where TO_DATE(TO_CHAR(INST_MONTH, 'MM-YYYY'), 'MM-YYYY') > TO_DATE('09-2016','MM-YYYY')