create or replace view bk_mbl_fault_analysis_v as
select t.*,
       To_Char(创建时间, 'yyyy-mm') ym
……SELECT Distinct machine
  FROM apps.bk_mbl_fault_analysis_v
 Where 2 = 2
-----------------------------------------------------------
   And ym > '2007-12'   --1
   And ym < '2008-12'   --2上面的第1和第2分开单独执行没有问题(就是注释其中一个),两个都做条件就会报错“无效数字”。

解决方案 »

  1.   

    你的ym是什么类型的,如果是时间类型,要这么比较:  ym > to_date('2007-12','yyyy-mm-dd') 
      

  2.   

    应该这样:
    ym > to_date('2007-12-01','yyyy-mm-dd') 
      

  3.   

    那肯定了,ym怎能>'2007-12-1'有ym<'2008-12-2明显矛盾着呢
      

  4.   

    看错了,不好意思
    ym > '2007-12'  你之前to_char过了,比较是没有问题的.现在我估计你的原因是拼串没有加''而导致的无效数据,如果是在串中要这样表达:ym > ''2007-12''
      

  5.   

    我是在 Pl/Sql 工具里面执行的,应该没有“拼串”的问题;另外,第1句和第2句执行其中一句是没有问题的,合起来不行。
      

  6.   

     To_Char(创建时间, 'yyyy-mm') 
    换成
    And ym > '200712'  --1 
      And ym < '200812'  --2  To_Char(创建时间, 'yyyymm') 
    试验一下
      

  7.   

    SELECT Distinct machine 
      FROM apps.bk_mbl_fault_analysis_v 
    Where 2 = 2 
      And to_char(ym,'yyyy-mm') > '2007-12'   
      And to_char(ym,'yyyy-mm')< '2008-12'  
      

  8.   

    很奇怪,把Distinct 去掉就可以,而且下面语句1不可以,语句2比1多一个“,count(*)”就可以。语句1
    ----------------------------------------------------------- 
    SELECT machine--, count(*)
      FROM apps.bk_mbl_fault_analysis_v 
    Where 2 = 2 
      And to_char(创建时间,'yyyy-mm') > '2007-12'  
      And to_char(创建时间,'yyyy-mm') < '2008-12'    
      Group By machine语句2
    ----------------------------------------------------------- 
    SELECT machine, count(*)
      FROM apps.bk_mbl_fault_analysis_v 
    Where 2 = 2 
      And to_char(创建时间,'yyyy-mm') > '2007-12'  
      And to_char(创建时间,'yyyy-mm') < '2008-12'  
      
      Group By machine