Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Operand type clash: date is incompatible with int  [new]
DaichiRyuu
Member

Откуда:
Сообщений: 9
Добрый день друзья, не люблю задавать вопросы, но что-то никак не могу понять что не так и почему MS SQL ругается со мной :)

Есть часть кода ....
DECLARE 
@sdate as date = CAST(GETDATE() as date),
@edate as date = CAST(GETDATE() as date)
@dbname nvarchar(100) = '[XXXXXX]'

EXECUTE (
N'SELECT DISTINCT or1.DistID, fcs.fname, COUNT(or1.orID) ''Кол-во накладных''
 FROM [XXX].' + @dbname + '.[dbo].[account] fcs
 JOIN [XXX].' + @dbname + '.[dbo].[fact] or1 WITH (NOLOCK)
   ON or1.DistID = fcs.fID
 WHERE fcs.fType = 12
   AND fcs.fActiveFlag=1
   AND CAST(orDate as date) >= ' + @sdate + N'
   AND CAST(orDate as date) <= ' + @edate + N'
   AND Condition=1 AND orType=2 
 GROUP BY or1.DistID,fcs.fname'
	)


При запуске этого кода выдается ошибка которая ранее мне не попадалась при работу с другими переменными

Msg 206, Level 16, State 2, Line 1
Operand type clash: date is incompatible with int


Пробовал и дополнительные ковычки и CAST туда зашить, ничего не помогает...
Тот же самый скрипт без EXECUTE отрабатывает на ура...
1 дек 17, 15:05    [20998604]     Ответить | Цитировать Сообщить модератору
 Re: Operand type clash: date is incompatible with int  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
А вы всегда складываете строки с датами?
N'...' + @sdate + N'...' =>
N'...' + QUOTENAME( CONVERT( NVARCHAR(10), @sdate, 112 ), '''' ) + N'...'
1 дек 17, 15:12    [20998640]     Ответить | Цитировать Сообщить модератору
 Re: Operand type clash: date is incompatible with int  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
угу, вы там дату савниваете с математикой 2017-12-01 = 2004 :)
1 дек 17, 15:15    [20998660]     Ответить | Цитировать Сообщить модератору
 Re: Operand type clash: date is incompatible with int  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
DaichiRyuu,

DECLARE 
@sdate as date = CAST(GETDATE() as date),
@edate as date = CAST(GETDATE() as date),
@dbname nvarchar(100) = '[XXXXXX]',
@query nvarchar(max)

select @query =
N'SELECT DISTINCT or1.DistID, fcs.fname, COUNT(or1.orID) ''Кол-во накладных''
 FROM [XXX].' + @dbname + '.[dbo].[account] fcs
 JOIN [XXX].' + @dbname + '.[dbo].[fact] or1 WITH (NOLOCK)
   ON or1.DistID = fcs.fID
 WHERE fcs.fType = 12
   AND fcs.fActiveFlag=1
   AND CAST(orDate as date) >= @sdate
   AND CAST(orDate as date) <= @edate
   AND Condition=1 AND orType=2 
 GROUP BY or1.DistID,fcs.fname'

exec sp_executesql @query, N'@sdate date, @edate date', @sdate, @edate;
1 дек 17, 15:22    [20998695]     Ответить | Цитировать Сообщить модератору
 Re: Operand type clash: date is incompatible with int  [new]
DaichiRyuu
Member

Откуда:
Сообщений: 9
Оу, нет конечно.
я просто недавно только начал писать динамические запросы и пока не совсем освоился с ними.
Спасибо большое за помощь.
1 дек 17, 15:22    [20998698]     Ответить | Цитировать Сообщить модератору
 Re: Operand type clash: date is incompatible with int  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3462
DaichiRyuu
Оу, нет конечно.
я просто недавно только начал писать динамические запросы и пока не совсем освоился с ними.
Спасибо большое за помощь.


стал на кривую дорожку
1 дек 17, 16:14    [20998940]     Ответить | Цитировать Сообщить модератору
 Re: Operand type clash: date is incompatible with int  [new]
DaichiRyuu
Member

Откуда:
Сообщений: 9
Увы, но работа скажем так заставляет начать работать таким образом чтобы видеть актуальные данные, а не прошлого дня...
5 дек 17, 11:21    [21006577]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить