表结构create table T1
(
PK_ID NUMBER(8) not null,
STARTRQ DATE,
ENDRQ DATE,
CONTENT VARCHAR2(100)
)
表数据
T1
PK_ID STARTRQ ENDRQ C ONTENT
101 2007-5-1 2007-5-20 记录一
102 2007-6-1 2007-7-10 记录二
103 2007-7-17 2007-8-20 记录三
104 2007-8-27 2007-9-19 记录四
要求给出任意时间段,查出着段时间内交集的所有内容如给出时间2007-5-5——2007-7-17结果是:
PK_ID STARTRQ ENDRQ C ONTENT
101 2007-5-1 2007-5-20 记录一
102 2007-6-1 2007-7-10 记录二
103 2007-7-17 2007-8-20 记录三
自己写的
SELECT CONTENT
FROM T1
WHERE startrq <= to_date( '2007-5-5 ', 'YYYY-MM-DD ')
AND endrq >= to_date( '2007-7-17 ', 'YYYY-MM-DD ') 查出结果为空,请问怎么会事呢?
(
PK_ID NUMBER(8) not null,
STARTRQ DATE,
ENDRQ DATE,
CONTENT VARCHAR2(100)
)
表数据
T1
PK_ID STARTRQ ENDRQ C ONTENT
101 2007-5-1 2007-5-20 记录一
102 2007-6-1 2007-7-10 记录二
103 2007-7-17 2007-8-20 记录三
104 2007-8-27 2007-9-19 记录四
要求给出任意时间段,查出着段时间内交集的所有内容如给出时间2007-5-5——2007-7-17结果是:
PK_ID STARTRQ ENDRQ C ONTENT
101 2007-5-1 2007-5-20 记录一
102 2007-6-1 2007-7-10 记录二
103 2007-7-17 2007-8-20 记录三
自己写的
SELECT CONTENT
FROM T1
WHERE startrq <= to_date( '2007-5-5 ', 'YYYY-MM-DD ')
AND endrq >= to_date( '2007-7-17 ', 'YYYY-MM-DD ') 查出结果为空,请问怎么会事呢?
SELECT CONTENT FROM T1
WHERE startrq>=Date'2007-5-5' and endrq<=Date'2007-7-17'
SELECT CONTENT
FROM T1
WHERE startrq >= to_date('2007-5-5','YYYY-MM-DD')
AND endrq <= to_date('2007-7-17','YYYY-MM-DD')
SELECT CONTENT
FROM T1
WHERE startrq >= to_date('2007-5-5','YYYY-MM-DD')
AND endrq <= to_date('2007-7-17','YYYY-MM-DD') 结果是
PK_ID STARTRQ ENDRQ C ONTENT
102 2007-6-1 2007-7-10 记录二
少了两条记录
SELECT CONTENT
FROM T1
WHERE startrq >= to_date('2007-5-5','YYYY-MM-DD')
AND startrq <= to_date('2007-7-17','YYYY-MM-DD')
AND endrq >= to_date('2007-5-5','YYYY-MM-DD')
AND endrq <= to_date('2007-7-17','YYYY-MM-DD');
或者
SELECT CONTENT
FROM T1
WHERE startrq between to_date('2007-5-5','YYYY-MM-DD') AND to_date('2007-7-17','YYYY-MM-DD')
AND endrq between to_date('2007-5-5','YYYY-MM-DD') AND to_date('2007-7-17','YYYY-MM-DD');
你说的被带笼子是什么意思啊?我是新来的,不懂规矩还请见谅,学习中
对了,上面改过的还是只有那一条记录,我不知道是不是其它问题了
我测试了是正确的,你试试看~~
select *
from T1 tt
where tt.STARTRQ >= to_date('2007-5-5','yyyy-mm-dd')
and tt.STARTRQ <= to_date('2007-7-17','yyyy-mm-dd')
or tt.ENDRQ >= to_date('2007-5-5','yyyy-mm-dd')
and tt.ENDRQ <= to_date('2007-7-17','yyyy-mm-dd'); select *
from T1 tt
where tt.STARTRQ between to_date('2007-5-5','yyyy-mm-dd') and to_date('2007-7-17','yyyy-mm-dd')
or tt.ENDRQ between to_date('2007-5-5','yyyy-mm-dd') and to_date('2007-7-17','yyyy-mm-dd');
如果表数据是:表数据
T1
PK_ID STARTRQ ENDRQ C ONTENT
101 2007-5-1 2007-5-20 记录一
102 2007-6-1 2007-7-10 记录二
103 2007-7-17 2007-8-20 记录三
104 2007-8-27 2007-9-19 记录四
105 2007-7-1 2007-8-1 记录五 最后一条记录出不来
这是我写的,您在看看,谢谢你了谢谢select *
from T1 tt
where (tt.startrq between to_date('2007-5-5','yyyy-mm-dd') and to_date('2007-7-17','yyyy-mm-dd'))
or
(tt.endrq between to_date('2007-5-5','yyyy-mm-dd') and to_date('2007-7-17','yyyy-mm-dd'))
or
(to_date('2007-5-5','yyyy-mm-dd') between tt.startrq and tt.endrq)
or
(to_date('2007-7-17','yyyy-mm-dd') between tt.startrq and tt.endrq)