关键字'in'-sql附近的语法不正确

eqqqjvef  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(434)

接近错误,这是我的代码

DECLARE @DateFrom DateTime ='2018-04-01',
            @DateTo DateTime = '2018-05-31'

            WHILE @DateTo < @DateFrom 
            BEGIN
            set @DateFrom = DATEADD(D,1,@DateFrom)
             SET @DateFrom = DATENAME(DW, @DateFrom) IN ( 'tuesday','friday',null)
            END

我犯了这样的错误
关键字“in”附近的语法不正确。

iqxoj9l9

iqxoj9l91#

DECLARE @DateFrom DateTime ='2018-04-01',
@DateTo DateTime = '2018-05-31'

WHILE @DateTo < @DateFrom 
BEGIN
set @DateFrom = DATEADD(D,1,@DateFrom)
    SET @DateFrom = case when DATENAME(DW, @DateFrom) IN ( 'tuesday','friday',null) then @DateFrom else null end

END
az31mfrm

az31mfrm2#

如果这真的是mysql,那么会有很多错误1)你没有声明@variables 2)要给变量分配一个值,请使用set语句,或者如果它是一个声明的变量,你可以默认一个值3)当语句语法不正确时,它应该是在做某事时。。。结束时4)必须终止每条语句5)多代码过程必须包含在begin..end块中5)此代码必须位于存储程序(过程、触发器、函数)中6)可能未设置分隔符。
这至少是语法,但我不明白你想用in语句做什么。

drop procedure if exists p;

delimiter $$
create procedure p()
begin
set @DateFrom ='2018-04-01',
    @DateTo   = '2018-05-31';

   WHILE @DateTo < @DateFrom do 
      set @DateFrom = DATEADD(D,1,@DateFrom);
      SET @DateFrom = DATENAME(DW, @DateFrom) IN ( 'tuesday','friday',null);

   END while;
end $$
delimiter ;

相关问题