【发布时间】:2016-09-01 06:02:10
【问题描述】:
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
这是我的查询。我只想知道我的 where 子句 kth.trans_dte 是否有问题。 我只想获得从 8 月 22 日到 8 月 27 日的交易,但我在该日期之前获得交易,2 月和 3 月不应该包含在内。我想知道为什么..我的代码有问题还是我不知道的数据库有问题。谢谢!
【问题讨论】:
-
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')。不要将日期作为字符串进行比较,将它们作为日期进行比较