2016-12-07 7 views
0

У меня есть этот запрос sql, который извлекает записи до 12/7/2016 проблема в том, что oracle возвращает записи, которые с 12/6/2016 и ниже. Могу я спросить, правильно ли это поведение?Не удается сравнить 2 даты в oracle

SELECT DISTINCT ACCOUNT_NO 
FROM TBL_CLIENT_FINANCIAL_ACTIVITY cfa 
WHERE CAST(tran_date as DATE) <= TO_DATE('12/07/2016'); 
+0

Do' SELECT ACCOUNT_NO, tran_date FROM ... '. Правильный результат? – jarlh

+0

Да. Он отражает правильный результат. Проблема заключается в сравнении даты. –

+0

Переместите 'CAST (tran_date as DATE)' и 'TO_DATE ('12/07/2016 ')' из WHERE в список выбора. Что происходит? – jarlh

ответ

1

Я предполагаю, что вы используете MM/DD/YYYY? Объявите его в своем to_date().

to_date('12/07/2016','MM/DD/YYYY') 

Кроме того, давайте Trunc эту новую дату, чтобы соответствовать дате вы заявляли, в противном случае эти оставшиеся часы минуты секунды позже, чем значение to_date.

trunc(CAST(tran_date as DATE)) <= to_date('12/07/2016','MM/DD/YYYY') 
+0

Работает функция trunc(). Я думаю, что кастовать временную метку на сегодняшний день недостаточно. –