Формат параметра даты и времени из Crystal Reports в хранимую процедуру SQL Server - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь создать отчет с помощью хранимой процедуры SQL Server, которая ожидает два datetime входных параметра. Однако хранимая процедура не принимает значение входного параметра, выбранное на экране приглашения, что приводит к ошибке

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

SQL, сгенерированный отчетом, по умолчанию использует функцию Convert

EXECUTE [Projects_findings_summary_date]
     CONVERT (DATETIME, '12/01/2017 00:00:00', 120),
     CONVERT (DATETIME, '12/31/2017 12:59:59', 120) 
GO

Этот код также вызвал ошибку в SQL Server Management Studio. Но это работает нормально, если мы возьмем функцию CONVERT.

EXECUTE [Projects_findings_summary_date]
     '12/01/2017 00:00:00',
     '12/31/2017 12:59:59'
GO

Любая помощь в решении этой проблемы приветствуется.

Мы недавно обновились до Crystal Reports 2016 и SQL Server 2014.

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Вы не можете использовать функции convert / cast при передаче переменных в хранимую процедуру, но вы объявляете переменные перед передачей их в proc, выполняете преобразование / приведение к переменным и затем передаете переменную в proc, что-то вроде этого:

Declare  @FromDate  DATETIME = CONVERT (Datetime,'12/01/2017 00:00:00', 120)
       , @ToDate    DATETIME = CONVERT (Datetime,'12/31/2017 12:59:59', 120);

EXECUTE [Projects_findings_summary_date] @FromDate
                                       , @ToDate
GO

Примечание

При преобразовании строки в значение DateTime третий параметр (Стиль) в функции CONVERT является избыточным, DateTimeне имеет стиля, он использует свой стандартный формат (галочки) для хранения данных в SQL Server.

0 голосов
/ 07 мая 2018

Устранена проблема с использованием собственного драйвера SQL OLE DB вместо поставщика Microsoft OLE DB для SQL Server. Преобразование не генерируется отчетом Crystal.

0 голосов
/ 07 мая 2018

IN Crystal Report в качестве команды введите следующую команду

declare @datefrom as datetime = {?datefrom}  -- parameter in CR
declare @dateto as datetime = {?dateto}  -- parameter in CR

EXECUTE [Projects_findings_summary_date] @datefrom, @dateto

--@datefrom and @dateto are datetime variables

Вам не нужно конвертировать

...