Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 подскажите по ошибке в динамическом запросе  [new]
cglcz
Member

Откуда:
Сообщений: 33
Вот сам запрос:
DECLARE @sql nvarchar(1000)
DECLARE @date date
SET @sql =
'SELECT Account.account_number, currency, amount, CAST(date_time_operation AS DATE) AS date_bank_operation, date_time_operation
FROM Account
JOIN Bank_operations ON Account.account_number = Bank_operations.account_number
WHERE currency = ''EUR''
AND CAST(date_time_operation AS DATE) = ''@d nvarchar (20)''
AND Account.account_number = 10000011'
SET @date ='@d nvarchar (20)'
EXECUTE sp_executesql @sql, @date, @d ='2017-01-17'


выдает ошибку - Conversion failed when converting date and/or time from character string.
Где у меня ошибка и как ее исправить?
2 мар 18, 13:46    [21232226]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по ошибке в динамическом запросе  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2979
cglcz,

AND CAST(date_time_operation AS DATE) = ''@d nvarchar (20)''


Вы пытаетесь сравнить date_time_operation со строкой @d nvarchar (20)

замените на
AND CAST(date_time_operation AS DATE) = @d
2 мар 18, 13:53    [21232271]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по ошибке в динамическом запросе  [new]
Bank_operations
Guest
cglcz,

DECLARE @date date
...
SET @date ='@d nvarchar (20)'


???
2 мар 18, 13:53    [21232272]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по ошибке в динамическом запросе  [new]
cglcz
Member

Откуда:
Сообщений: 33
HandKot,
не получается, все равно такая же ошибка
2 мар 18, 13:56    [21232290]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по ошибке в динамическом запросе  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
cglcz,

не получается что? Вам показывают, что Вы чушь написали.
2 мар 18, 14:00    [21232314]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по ошибке в динамическом запросе  [new]
cglcz
Member

Откуда:
Сообщений: 33
HandKot,
Все, получилось. Спасибо.

GO
DECLARE @sql nvarchar(1000)
DECLARE @date nvarchar (20)
SET @sql =
'SELECT Account.account_number, currency, amount, CAST(date_time_operation AS DATE) AS date_bank_operation, date_time_operation
FROM Account
JOIN Bank_operations ON Account.account_number = Bank_operations.account_number
WHERE currency = ''EUR''
AND CAST(date_time_operation AS DATE) = @d
AND Account.account_number = 10000011'
SET @date ='@d nvarchar (20)'
EXECUTE sp_executesql @sql, @date, @d = '2017-01-17'
2 мар 18, 14:02    [21232320]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по ошибке в динамическом запросе  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
cglcz,
DECLARE @sql nvarchar(1000)
SET @sql = '
SELECT Account.account_number, currency, amount, CAST(date_time_operation AS DATE) AS date_bank_operation, date_time_operation
FROM Account 
JOIN Bank_operations ON Account.account_number = Bank_operations.account_number
WHERE currency = ''EUR''
AND date_time_operation >= @d
AND date_time_operation  < DATEADD( DAY, 1, @d )
AND Account.account_number = 10000011'
EXECUTE sp_executesql 
  @sql, 
  -- заменить тип @d на тип данных столбца date_time_operation
  N'@d DATETIME' ,
  -- при присвоении переменным типа DATE/DATETIME/DATETIME2 лучше использовать ISO формат:
  -- короткая дата - ГГГГММДД
  -- дата и время - ГГГГ-ММ-ДДTЧЧ:ММ:СС
  -- @d = '20170117'
  -- @d = '2017-01-17T00:00:00'
  @d = '20170117'
2 мар 18, 19:15    [21233470]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить