Неверный синтаксис рядом с ключевым словом 'IN' - sql

0

Получение ошибки рядом с IN и вот мой код

 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".

  • 0
    Что ты пытаешься сделать? Ошибка имеет смысл - вы не можете использовать IN в операторе SET .
  • 0
    Я хочу установить всю дату в переменную.
Показать ещё 6 комментариев
Теги:
date

2 ответа

0
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
0

Если это действительно mysql, есть много ошибок. 1) Вы не объявляете @переменные. 2) Чтобы присвоить значение переменной, используйте оператор set или если это объявленная переменная, вы можете по умолчанию использовать значение 3) Хотя синтаксис операторов неверен это должно быть в то время, когда что-то DO... END WHILE 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 ;
  • 0
    Еще лучше, если бы вы использовали локальные переменные (объявление) вместо пользовательских переменных. Таким образом, подпрограммы могут безопасно вызывать другие подпрограммы, не опасаясь, что значения переменных могут измениться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню