我这边有个表tablea,里面有个列varchar型的列a ,都是诸如 '2010.05' 这样的内容 ,希望做个 查询,关于时间段的查询,比如2010年1月至2010年6月这样的,sql语句怎么写呢 ?我以前用sql server的,oracle的时间函数,转换函数也不太懂。大家帮忙写一个sql语句给我参考一下可以吗?谢谢啦 

解决方案 »

  1.   

    select * from tablea where a >=2010.01 and a<=2010.06
      

  2.   

    如果你的数据质量没问题,a列的时间格式都是yyyy.mm格式的话,可以用:  select * from tablea where a >= 2010.01 and a <= 2010.06如果要转成日期格式,可以这样:SQL> SELECT to_char(SYSDATE,'yyyy.mm') FROM dual;
     
    TO_CHAR(SYSDATE,'YYYY.MM')
    --------------------------
    2010.08
     
    SQL> select to_date('2010.08','yyyy.mm') from dual;
     
    TO_DATE('2010.08','YYYY.MM')
    ----------------------------
    2010-8-1
     
    SQL> 
      

  3.   

    使用TO_DATE(字符串,'yyyy.mm')
    然后
    比较时间
      

  4.   

    where a between '2010.01' and '2010.06'
    注意引号
      

  5.   

    where to_char(sysdate,'yyyy.mm') between '2010.01' and '2010.06'
      

  6.   

    SELECT * FROM TABLE A WHERE TO_CHAR(A.DATE,'yyyy.mm') BETWEEN '2010.01' and '2010.06';
      

  7.   


    SELECT * FROM TABLE A WHERE A.DATE BETWEEN to_char('201001',yyyy.mm) and to_char('201006',yyyy.mm);
      

  8.   

    where to_char(sysdate,'yyyy.mm') between '2010.01' and '2010.06'
      

  9.   

    select * from  where to_char(sysdate,'yyyy.mm') between '2010.01' and '2010.06'
      

  10.   


    --如果你输入的时间段参数是字符型的,直接这样就可以了
    select * from tablea where a between '2010.01' and '2010.06';
      

  11.   

    varchar类型的用:
    select * from t where a between '2010.01' and '2010.06';
    date类型的用:
    select * from t where to_char(a,'yyyymm') between '201001' and '201006';
      

  12.   

    SELECT * FROM TABLE A WHERE TO_CHAR(A.DATE,'yyyy.mm') BETWEEN '2010.01' and '2010.06';