where to_char(lddate)='01-APR-15'
とやると、あたりまえのことながらかなり遅い。
(lddateが文字列に変換されて比較されてそうだから。私みたいなド素人でもそう思う)
ところが、
where lddate=to_date('01-APR-15')
とやると、一件もヒットしなくなる。
どうもdate型を上記のように使うと00:00:00が暗黙のうちに仮定されてしまうからのよう。
結局時間を自分で指定してやるのが正解で、
where lddate >=to_date('01-APR-15 00:00:00','DD-MON-YY HH24:MI:SS')
and lddate <=to_date('01-APR-15 23:59:59','DD-MON-YY HH24:MI:SS')
みたいにするのがいいみたい。date型は秒より小さい値をどうしてるんだろう?という気はする。
本当は
and lddate <to_date('01-APR-16 00:00:00','DD-MON-YY HH24:MI:SS')
のほうが正しいんだろうけど。
0 件のコメント:
コメントを投稿