oracle sql 时间字段比较 要求:A表里的一个时间字段在B表二个字段内怎么写

a.lrrq between to_date((b.ksrq),'YYYY-MM-DD') and to_date((b.jsrq),'YYYY-MM-DD')
在线等

你是要查询在表B中满足字段 ksrq,jsrq之间的 表A的时间吗
那你 ksrq,jsrq 这两个字段本身就有多行数据,这样不可能有唯一的时间范围啊
试试下面
select a.lrrq from a,b
where a.lrrq >=(select top 1 ksrq from b order by ksrq desc)
and a.lrrq <=(select top 1 jsrq from b order by jsrq desc)追问

我的想法是这样的
比如B表的ksrq和jsrq的时间段是2012-04-01至2012-04-30
那么就把A表存在于B表的时间段内的数据都查出来。

追答

那就试试这个
select a.* from a,b
where (a.lrrq in (select ksrq from b ))
or (a.lrrq in (select jsrq from b ))

追问

行是行,但是速度太慢。这个语句只有时间段做条件,就没有其他的条件,所以很慢。
想要一个更好的解决方法。。

解决了,我直接是select * from a,b where a.lrrq>=b.ksrj and a.lrrq<=b.jsrq
因为这三个字段都是date类型,不用转来转去。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-23
where a.lrrq >= to_date((b.ksrq),'YYYY-MM-DD')
and a.lrrq <= to_date((b.jsrq),'YYYY-MM-DD') + 0.9999