我用的是sql2000数据库,查询语句如下:
SELECT t_time.ctime, Sum([t_saledet].[sl]) AS sl, Sum([t_saledet].[sjje]) AS sjje
FROM t_time LEFT JOIN t_saledet ON hour(t_saledet.sj)=trim(t_time.ctime) and t_time.ctime>=9 and t_time.ctime<=23
GROUP BY t_time.ctime
ORDER BY t_time.ctime运行程序出错:
hour不是可以识别的函数名
trim不是可以识别的函数名

怎么解决?谢谢!!

解决方案 »

  1.   

    Trim函数需要 uses SysUtils;Hour能这样用吗?
      

  2.   

    这是源码原来是用ACCESS数据库的,现在我改用sql2000,就出现这样的问题了.里面还有用Year month的呢
    'SELECT trim(str(year(t_saledet.rq)))+''-''+IIf(Len(trim(Str(Month(t_saledet.rq))))<2,''0''+trim(Str(Month(t_saledet.rq))),trim(Str(Month(t_saledet.rq)))) AS edate,sum(t_saledet.sl) as esl, sum(t_saledet.sjje) as esjje'
           +' FROM t_saledet,t_ware'
           +' WHERE t_saledet.clabel=t_ware.clabel and t_saledet.spbh=t_ware.spbh and t_saledet.bmh like ''%s'' AND (t_saledet.clabel) like ''%s'' AND t_ware.flh like ''%s'' and (t_saledet.rq>=%s) and (t_saledet.rq<=%s)'
           +' group by trim(str(year(t_saledet.rq)))+''-''+IIf(Len(trim(Str(Month(t_saledet.rq))))<2,''0''+trim(Str(Month(t_saledet.rq))),trim(Str(Month(t_saledet.rq))))';
    为什么改换SQL2000就有问题了呢?
      

  3.   

     hour(t_saledet.sj)=trim(t_time.ctime)
    SQL  函数,DATEPART
    DATEPART(HH,t_saledet.sj)=t_time.ctime
      

  4.   

    ACCESS 是JET SQL 和 2000 是有区别的。
      

  5.   

    谢谢楼上的ForFumm,那2楼的IIf(Len(trim(Str(Month(t_saledet.rq))))<2怎么修改呢?好像IIf在SQL2000也不能识别哦?
      

  6.   

    我这样修改怎么不行啊?
    SELECT Str(DATEPART(YY,t_saledet.rq))+'-'+Len(Str(DATEPART(MM,t_saledet.rq)))<2,"0"+Str(DATEPART(MM,t_saledet.rq)),Str(DATEPART(MM,t_saledet.rq)) AS edate, sum([t_saledet].[sl]) AS esl, sum([t_saledet].[sjje]) AS esjje
    FROM t_saledet,t_ware
    where t_saledet.spbh=t_ware.spbh
    GROUP BY Str(DATEPART(YY,t_saledet.rq))+'-'+Len(Str(DATEPART(MM,t_saledet.rq)))<2,"0"+Str(DATEPART(MM,t_saledet.rq)),Str(DATEPART(MM,t_saledet.rq))
      

  7.   

    iif 相当于 TSQ中的CASE WHEN.
      

  8.   


    改成下面的吧
    SELECT CONVERT(CHAR(7), t_saledet.rq, 120) AS edate,
              SUM(t_saledet.s1) AS es1,
              SUM(t_saledet.sjje) AS esjje
              FROM t_saledet, t_ware
              WHERE  t_saledet.clabel=t_ware.clabel and t_saledet.spbh=t_ware.spbh and t_saledet.bmh like '%s'
              GROUP BY CONVERT(CHAR(7), t_saledet.rq, 120)
      

  9.   

    SELECT CONVERT(VARCHAR(7), GETDATE(), 120) fmt
    fmt
    -------
    2011-03(1 row(s) affected)