各位大侠:
我在oracle9数据库中,有个字段是varchar2类型的,里面存的是时间,格式如下"2007年10月08号15点05分",现在想查询日期是某一天到某一天之间的所有记录,比如从"2007年10月01号"到"2007年10月08号"之间的所有记录。这个该怎么作呢?注:查询某一天的记录,比如2007年10月08号的所有记录,可以这样写
select * from LOG where instr(OPE_DATE,'2007年10月08号')>0,OPE_DATE就是存放时间的varchar2字段。谢谢了!!

解决方案 »

  1.   

    给你个建议:用日期类型来保存时间。这样你就不会有这个困扰了。并且还会获得ru下好处:
    1、更好的性能。
    2、永远正确的日期格式,保证数据完整性。
    anyway,你的问题可以这样解决:
    SELECT * from log where TO_DATE (REPLACE  (REPLACE  (REPLACE  (REPLACE (REPLACE (REPLACE (ope_date,     '年',     '-'     ),    '月',    '-'    ),   '日',   '-'   ),   '号',   '-'  ),  '点',  '-'  ),  '分',  ''  ),  'YYYY-MM-DD-HH24-MI' )
    between to_date('2007-10-01','YYYY-MM-DD') AND  to_date('2007-10-08','YYYY-MM-DD')   
      

  2.   

    数据库设计有问题,没见过这样存时间数据的,要么是date类型,要么是yyyymmdd类型,你这样设计即使能解决你现在的问题,将来无论统计还是查询都有更大的困难,建议你改成date类型,长痛不如短痛!
      

  3.   

    select * from log where to_date(ope_date,'yyyy年mm月dd号hh24点mi分') between to_date( '2007-10-01', 'YYYY-MM-DD') AND  to_date( '2007-10-08', 'YYYY-MM-DD')
      

  4.   

    'yyyy年mm月dd号hh24点mi分 '
    不是系统可以识别的时间格式;只能当字符串来处理;效率比较差;
    使用爱心觉罗的方式比较好