请大家帮忙呀 
select   avg(V11012) as Result_ave  FROM   T_mete_realtime   
   where  IIIII=50136 and  VYEAR=to_number(to_char('04-12月-07','YYYYMM')) and  
    VDAY=to_number(to_char('04-12月-07','DD')); 
错在哪里了? 
或这句: 
begin  
dbms_output.put_line(to_date('12/04/07','YYYYMM')); 
end; 
/ 也是一样的错误?不明白哪错了啊!真着急!

解决方案 »

  1.   

    to_date('12/04/07','YYYYMM')
    错误
    应该是
    to_date('12/04/07','mm/dd/yy'));    to_number(to_char('04-12月-07','YYYYMM'))
    to_char(date,'yyyymm')才是正确格式,你进而本身就是char类型了,怎么再转?
    就算是用to_date也不对,字符串里的格式要和后面的一样的 
      

  2.   

    to_date(目标字符串,'字符串内日期格式')
    比如像你写的格式
    或者像这样
    '2008-4-17',后面的就要写成'yyyy-mm-dd'to_char(日期类型数据,'日期格式')
    to_char的日期格式是固定的,搜索下就知道了,这些都是基本知识
      

  3.   

    楼上这位高手,你的意思我没太明白,我就是想把2007年12月4日 转换为数字型的:200712
    只要年和月,不要日。
    to_date('12/04/07','YYYYMM') 这样写不对,但是
    to_date(sysdate,'YYYYMM') 这样就是对的呀还有我是想先把'04-12月-07'这个日期型 转换为字符型:200712,再一次转换为数字型的:200712能告诉我怎么实现吗?谢谢!
      

  4.   

    to_char(date类型的数据,'日期格式')
    '04-12月-07'你这个本身就是字符串型的,不是date型的
    懂嘛
    两种方式
    一种是
    to_number(to_char(to_date('04-12月-07','dd-mon-yy'),'yyyymm'))
    这种其实复杂化了
    第二种
    to_number('20'||substr('04-12月-07',8,2)||substr('04-12月-07',4,2))
      

  5.   

    难道只取年和月就不行吗,一定要年月日都取出来?
    刚才写错了,to_char(sysdate,'YYYYMM') 这样就是对的
    但是,to_char('04-12月-07','YYYYMM') 这样就是错的
    不明白为什么呀?
    '04-12月-07'不也是一个日期类型的吗
      

  6.   

    另外,你vyear和vday两个字段其实没必要存为number类型的,varchar2就行了
    200707一比较不就行了
    一般存日期类型的数据不太会用number类型的另外,估计你以前用sql server的吧
    在sqlserver里,假设vdate是个date类型的数据
    vdate='2008-04-17'这样是可以的
    在oracle这样不行的,肯定报错的,要这样
    vdate=to_date('2008-04-17','yyyy-mm-dd')
    或者
    to_char(vdate,'yyyy-mm-dd')='2008-04-17'