表
PK_ID STARTRQ ENDRQ C ONTENT
101 2007-5-1 2007-5-20 阶段一
102 2007-6-1 2007-10-25 阶段二
103 2007-7-17 2007-8-1 阶段三
104 2007-8-27 2007-10-19 阶段四
查询2007-5-1到2007-8-1 时间内的ONTENT 内容
PK_ID STARTRQ ENDRQ C ONTENT
101 2007-5-1 2007-5-20 阶段一
102 2007-6-1 2007-10-25 阶段二
103 2007-7-17 2007-8-1 阶段三
104 2007-8-27 2007-10-19 阶段四
查询2007-5-1到2007-8-1 时间内的ONTENT 内容
SELECT CONTENT
FROM T1
WHERE TO_CHAR(T1.STARTRQ,'YYYY-MM-DD')>=TO_CHAR('2007-5-1','YYYY-MM-DD')
AND TO_CHAR(T1.STARTRQ,'YYYY-MM-DD')<=TO_CHAR('2007-8-1','YYYY-MM-DD')
FROM T1
WHERE TO_DATE(T1.STARTRQ, 'YYYY-MM-DD ') >=TO_DATE( '2007-5-1 ', 'YYYY-MM-DD ')
AND TO_DATE(T1.STARTRQ, 'YYYY-MM-DD ') <=TO_DATE( '2007-8-1 ', 'YYYY-MM-DD ')如果startrq是日期型
SELECT CONTENT
FROM T1
WHERE T1.STARTRQ >=TO_DATE( '2007-05-01 ', 'YYYY-MM-DD ')
AND T1.STARTRQ <=TO_DATE( '2007-08-01 ', 'YYYY-MM-DD ')
修改后
SELECT CONTENT
FROM T1
WHERE T1.STARTRQ<=TO_CHAR('2007-5-1','YYYY-MM-DD')
AND T1.ENDRQ>=TO_CHAR('2007-8-1','YYYY-MM-DD')报错:无效数字
FROM T1
WHERE TO_CHAR(t1.startrq,'YYYY-MM-DD')<=TO_CHAR('2007-5-1','YYYY-MM-DD')
AND TO_CHAR(t1.endrq,'YYYY-MM-DD')>=TO_CHAR('2007-8-1','YYYY-MM-DD')这样也不行
FROM T1
WHERE to_date(t1.startrq) <=to_date('2007-5-1 ', 'YYYY-MM-DD ')
AND to_date(t1.endrq) >= to_date('2007-8-1', 'YYYY-MM-DD ')
SELECT CONTENT
FROM T1
WHERE to_date(t1.startrq) <=to_date( '2007-5-1 ', 'YYYY-MM-DD ')
AND to_date(t1.endrq) >= to_date( '2007-8-1 ', 'YYYY-MM-DD ')
FROM T1
WHERE to_date(t1.startrq) <=to_date( '2007-5-1 ', 'YYYY-MM-DD ')
AND to_date(t1.endrq) >= to_date( '2007-8-1 ', 'YYYY-MM-DD ') 你怎么很喜欢,对Date的类型to_date,对char类型的TO_CHAR呀。去掉,前面的to_date。而且你的条件写错了。你的条件变成了开始日期,小于2007-5-1,结束时间,大于2007-8-1,这个是你的要求吗?
(
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-10-25 阶段二
103 2007-7-17 2007-8-1 阶段三
104 2007-8-27 2007-10-19 阶段四
--要求是随便给个时间段,把里面的所有记录查出来
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-6-25 阶段二
103 2007-7-17 2007-8-1 阶段三
104 2007-8-27 2007-9-19 阶段四
FROM T1
WHERE startrq <= to_date( '2007-10-11', 'YYYY-MM-DD')
AND endrq >= to_date( '2007-10-17', 'YYYY-MM-DD') 这样取不出来吗?
SELECT CONTENT
FROM T1
WHERE startrq >= to_date( '2007-10-11 ', 'YYYY-MM-DD ')
AND endrq <= to_date( '2007-10-17 ', 'YYYY-MM-DD ') 这样
between and 并不适合它。因为,他要求两个日期的范围,包括一个他制定的范围。To genispan:
他这样的简单需求,还不需要用程序来做。To ehsgs:
你是不是正好做反了?