select count(*) from sapprd.ZHRYTHIF001 where MANDT='800' and DEPT_CODE='00000016' and  to_char(ENTRY_DATE, 'yyyy') <= 2009
这句话有错,帮忙改正确。
这里列名没有错误,只是to_char(ENTRY_DATE, 'yyyy') <= 2009这部分有错误
谢谢

解决方案 »

  1.   

    如果ENTRY_DATE是date型的这种写法应该是没错的,是否ENTRY_DATE不是date型的?
      

  2.   

    试过了,也不行
    $sqlOracle = "select count(*) from $SAPDBName.ZHRHIF001 where MANDT='$SAP_Client' and DEPT_CODE='".$tmpDanWei["code"]."'"." and  to_char(ENTRY_DATE, 'yyyy') <= '$NianDu'";php语言的。
      

  3.   

    嗯,可能不是date型的
    我怎么能看出它是不是date型的?
    刚学
      

  4.   

    desc 表名   看看这个表的结构就知道啦~~~~如果是的话,这个语句就没问题~~~
      

  5.   

    对的。我的那个列不是date型,是字符串为什么我的sql plus没有输出呢,回车后没有输出
      

  6.   

    如果是字符串就用截取的方式查询:例如:ENTRY_DATE格式是20090923
    select count(*) from sapprd.ZHRYTHIF001 where MANDT='800' and DEPT_CODE='00000016' and  substr(ENTRY_DATE,1,4) <= 2009 
      

  7.   

    請將 to_char(ENTRY_DATE, 'yyyy') 的結果轉換成integer型態
      

  8.   

    设置输出显示:
    set serveroutput on;
      

  9.   

    看表的结构:desc  sapprd.ZHRYTHIF001;
    如果用sql plus应该打开输出:set serveroutput on;ENTRY_DATE这个是字符串,则应该这样用:
    select count(*) from sapprd.ZHRYTHIF001 where MANDT='800' and DEPT_CODE='00000016' and  substr(ENTRY_DATE,1,4)<= '2009'; 
      

  10.   

    select count(*) from sapprd.ZHRYTHIF001 where MANDT='800' and DEPT_CODE='00000016' and  substr(ENTRY_DATE,1,4) <= 2009; 这样是一样的~~~~·