我在表中有两列数据类型为varchar2。 现在我想根据输入值获取数据,基于此我的选择查询如下所示:
select fromtime, totime from temp_trd_shr where
fromtime <= '08:00' and totime >='10:00'
Fromtime:varchar2(50) totime:varchar2(50) 08:00&amp; 10:00:输入值(字符串和格式总是像xx:xx一样修复) Oracle 11g
我尝试使用to_number,但我无法做到这一点。
答案 0 :(得分:3)
CREATE TABLE temp_trd_shr
(
fromtime VARCHAR2(5)
, totime VARCHAR2(5)
);
INSERT INTO temp_trd_shr VALUES ('01:00', '18:00');
INSERT INTO temp_trd_shr VALUES ('02:00', '17:00');
INSERT INTO temp_trd_shr VALUES ('03:00', '16:00');
INSERT INTO temp_trd_shr VALUES ('04:00', '15:00');
INSERT INTO temp_trd_shr VALUES ('05:00', '14:00');
INSERT INTO temp_trd_shr VALUES ('06:00', '13:00');
INSERT INTO temp_trd_shr VALUES ('08:30', '09:30');
INSERT INTO temp_trd_shr VALUES ('08:45', '09:45');
SELECT COUNT(*)
FROM temp_trd_shr;
-- 8
SELECT *
FROM temp_trd_shr
WHERE TO_NUMBER(REPLACE(fromtime, ':')) <= TO_NUMBER(REPLACE('08:00', ':'))
AND TO_NUMBER(REPLACE(totime, ':')) >= TO_NUMBER(REPLACE('10:00', ':'))
ORDER BY
1
;
/*
01:00 18:00
02:00 17:00
03:00 16:00
04:00 15:00
05:00 14:00
06:00 13:00
*/