2016-02-11 3 views
-1

Ниже приведена моя таблица Loan_Details.Oracle Выбор даты

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-ОКТ-2016 всегда возвращает

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

Почему я отсутствующего 11-JAN-17?

(На данный момент рассмотрим месяц и только год)

+0

'to_char (TO_DATE ('9/11/2016', 'MM/DD/yyyy '),' MM-YYYY ') 'это совершенно бесполезно. Это сложный способ написания '' 11 -2016''. Какой тип данных «inst_month»? Если это «дата», то вызов 'to_date()' на нем для преобразования значения даты в значение 'date' не имеет никакого смысла. Просто используйте 'where inst_month> date '2016-09-11''. Btw. '9/11/2016' не' 11-OCT-2016' это сентябрь, 9-е (2016-11-09) –

+0

God Save Me Пожалуйста, дайте мне способ сравнить дату, независимо от даты. Мне нужно сравнить только месяц и год –

ответ

1

Вы ошибочно сравнивают Date столбец с матча персонажа с помощью to_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') 
+0

@code_Finder: Конечно, 9/11/2016 - это 11-SEP-2015, а не 11-OCT-2015, как вы упомянули в своем вопросе. –

+0

Спасибо mate .. Дайте мне способ сравнить только месяц и год –

+0

Вы можете попробовать: 'select INST_MONTH from loan_details, где TO_DATE (TO_CHAR (INST_MONTH, 'MM-YYYY'), 'MM-YYYY')> TO_DATE (' 09-2016 ',' ММ-ГГГГ ') ' –

Смежные вопросы