select ktl.id, kth.trans_dte, kth.trtype, kp.match_code,ktl.net_amount,ktl.gross_amount,ktl.db_portfolio_type,ktl.cr_portfolio_type from k$transaction_lines ktl
left join k$transaction_header kth on ktl.id=kth.id
left join k$portfolio kp on kp.id = (CASE WHEN ktl.db_portfolio_type = 'C' THEN ktl.db_portfolio ELSE ktl.cr_portfolio END)
where to_char(kth.trans_dte,'DD-MON-YY') >= '22-AUG-16'
and to_char(kth.trans_dte,'DD-MON-YY') <= '27-AUG-16'
and ktl.db_portfolio_type <> 'I'
and ktl.cr_portfolio is not null
order by kth.trans_dte, ktl.id, kp.match_code, kth.trtype
Это мой запрос. Я просто хочу знать, есть ли у меня что-то не так с моим предложением clth.trans_dte. Я только хочу получить Сделки с 22 августа по 27 августа, но я получаю транзакции до этой даты, февраль и марш включены, когда их не должно быть. Интересно, почему .. Есть ли проблема с моим кодом или это что-то с db, которого я не знаю. Благодаря!SQL-запрос между двумя датами, показывающими даже те, которые не совпадают между
'to_char (kth.trans_dte, 'DD-MON-YY')> = '22 -AUG-16'' должно быть: kth.trans_dte> = to_date ('22 -AUG-16 ',' DD-MON -YYY ') 'или даже лучше (более надежный):' th.trans_dte> = to_date (' 2016-08-22, 'YYYY-MM-DD') '. Не сравнивайте даты как строки, сравнивайте их как даты –