【闪电结贴】【50分求一SQL语句的含义】
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 '   
 嘿嘿,最好给点解释
------解决方案--------------------不能运行
------解决方案--------------------你这个不是MSSQL的吧?
------解决方案----------------------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 '
------解决方案--------------------NOW(),TO_DAYS(),IF   mssql都不能这么用阿
------解决方案--------------------IF 在T-SQL中不是函数! 
 用CASE WHEN
------解决方案--------------------NOW(),TO_DAYS(),IF   mssql都不能这么用阿 
 ==== 
 GETDATE()
------解决方案--------------------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 '   
 你的应是这样~
------解决方案--------------------MYSQL里面必须有IF END 结构。
------解决方案--------------------操作数据表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地段为当前时间。