我现在有一张表 里面有一个时间字段 类型是vachar2(20) ,如何按时间段进行数据的查询,这样的SQL如何写?

解决方案 »

  1.   

    直接比较,输入的如果是date类型,则将输入参数用to_char函数转化成同字段格式的数据进行比较
      

  2.   

    里面存的数据为2009-10-09 12:10:30  方便的话把sql 写一些吧 谢谢
      

  3.   

    SQL> create table t1(time varchar2(20));Table created.SQL> insert into t1 values('2009-11-17 12:10:20');1 row created.SQL> insert into t1 values('2009-11-16 12:10:20');1 row created.SQL> insert into t1 values('2009-11-16 15:10:20');1 row created.SQL> commit;Commit complete.SQL> select * from t1;TIME
    --------------------
    2009-11-17 12:10:20
    2009-11-16 12:10:20
    2009-11-16 15:10:20
    SQL> select * from t1
      2  where to_date(time,'YYYY-MM-DD HH24:MI:SS') between to_date('2009-11-16 13:
    00:00','YYYY-MM-DD HH24:MI:SS') and to_date('2009-11-17 13:00:00','YYYY-MM-DD HH
    24:MI:SS');TIME
    --------------------
    2009-11-17 12:10:20
    2009-11-16 15:10:20
      

  4.   

    e ,楼上已经写了直接字符串比较应该也是可以的
    select * from t1
    where time between '2009-11-16 13:
    00:00' and '2009-11-17 13:00:00';
      

  5.   

    恩 我刚试了下 直接比字符串也是可以的
    呵呵 ORACLE还挺聪明哦 把字符串当日期比 我试了几个特殊值都没试出错误 好像是可以
    不过有个限制条件 那就是比较字符串必须与表中存储日期字符串的格式相同才行SQL> select * from t1;TIME
    --------------------
    2009-11-17 12:10:20
    2009-11-16 12:10:20
    2009-11-16 15:10:20SQL> select * from t1
      2  where time between '09-11-16 13:
      3  00:00' and '09-11-17 13:00:00';no rows selectedSQL> select * from t1
      2  where time between '2009-11-16 13:
      3  00:00' and '2009-11-17 13:00:00';TIME
    --------------------
    2009-11-17 12:10:20
    2009-11-16 15:10:20