UPDATE  XXX  SET TOTAL=TOTAL+1,MONTHS=(IF (MONTH(LAST_TIME)=MONTH(NOW()),MONTHS+1,1)),WEEKS=(IF (YEARWEEK(LAST_TIME)=YEARWEEK(NOW()),WEEKS+1,1)),DAYS=(IF (TO_DAYS(LAST_TIME)=TO_DAYS(NOW()),DAYS+1,1)),LAST_TIME=NOW() WHERE ZID='20070420'嘿嘿,最好给点解释

解决方案 »

  1.   

    哦表的结构:XXX:zid, total, months, weeks, days, mod_time, last_time
      

  2.   

    --try
    UPDATE  XXX  SET TOTAL=TOTAL+1,
    MONTHS=(case when(MONTH(LAST_TIME)=MONTH(NOW()) then MONTHS+1 else 1) end),
    WEEKS=(case when (YEARWEEK(LAST_TIME)=YEARWEEK(NOW()) then WEEKS+1 else 1) end),
    DAYS=(Icase when (TO_DAYS(LAST_TIME)=TO_DAYS(NOW()) then DAYS+1else ) end ),
    LAST_TIME=NOW() 
    WHERE ZID='20070420'
      

  3.   

    NOW(),TO_DAYS(),IF   mssql都不能这么用阿
      

  4.   

    IF 在T-SQL中不是函数!
    用CASE WHEN
      

  5.   

    NOW(),TO_DAYS(),IF   mssql都不能这么用阿
    ====
    GETDATE()
      

  6.   

    UPDATE  XXX  SET TOTAL=TOTAL+1,
    MONTHS=( case when MONTH(LAST_TIME)=MONTH(getdate()) then MONTHS+1 else 1 end ), 
     --当LAST_TIME字段的月和今天的月相等,MONTHS+1,否则为1
     WEEKS=( case when DATEPART ( wk , LAST_TIME )=DATEPART (wk ,getdate()) then WEEKS+1 else 1 end ),--当LAST_TIME字段的周和今天的周相等,WEEKS+1,否则为1
    DAYS=(( case when DAY(LAST_TIME )=DAY(getdate()) then DAYS+1 else 1 end )
     --当LAST_TIME字段的日和今天的日相等,DAYS+1,否则为1
    WHERE ZID='20070420'你的应是这样~
      

  7.   

    MYSQL里面必须有IF END 结构。
      

  8.   

    操作数据表XXX,对于所有ZID为'20070420'的记录:
      将TOTAL字段+1;
      如果LAST_TIME字段所表示的月份等于当前月份,更新MONTHS字段+1,否则更新MONTHS为1;
      如果LAST_TIME字段所表示的周是当前周,更新WEEKS字段+1,否则更新WEEKS为1;
      如果LAST_TIME字段表示的日是当前日,更新DAYS字段+1,否则更新DAYS为1;
      更新LAST_TIME地段为当前时间。