Полагаю, что формат, который вы использовали в прошлом и который работал нормально, выглядит примерно так:
SELECT ROWDATE, CALLID, DIALED_NUM
FROM CmsCallHistory
WHERE DIALED_NUM IN ('6582000', '6752000')
AND SEGSTART BETWEEN DateAdd("h", -7, [Start Date]) AND DateAdd("h", -4, [End Date])
AND sourceid = 1;
Вы наверняка использовали это в MS Access, и при открытии запроса (отображении таблицы данных) Access действительно обратился к вам за помощью, указав значения [Start Date]
и [End Date]
(поскольку Access не может обрабатывать эти выражения самостоятельно).
Теперь (благодаря моим навыкам в clearvoyance) вы сидели перед окном SSMS и пытались «перенести» свой опыт на следующий уровень, базу данных MS SQL Server. Так как ваши квадратные скобки были подчеркнуты красным, вы объявили переменные, и после того, как заключили квадратные скобки в одинарные кавычки, красные линии исчезли (ууу!) ... рад был слишком рано. В SQL Server назначение строк в кавычках переменным datetime будет работать, но только в том случае, если эти строки можно преобразовать в значение datetime. К сожалению, '[Start Date]'
не является кандидатом на это. И поскольку Microsoft создала SSMS (SQL Server Management Studio) в основном для «управления» базой данных, они не сделали SSMS настолько умной (удобной для конечного пользователя), чтобы интерпретировать квадратные скобки в качестве параметров и создавать маленькие всплывающие окна для запроса. пользователь для значений. Сам SQL Server не имеет графического пользовательского интерфейса, он может только получать команды SQL, обрабатывать их и возвращать результаты. Это то, что вы, вероятно, узнали, поэтому вы скопировали код из SSMS обратно в Access ... но Access хочет, чтобы запрос начинался с оператора SELECT (или UPDATE и т. Д.). Access не может выполнить произвольный код T-SQL.
Вывод: вам придется либо разрешить Access обрабатывать запрос и отображать всплывающие окна параметров, как в прошлом (это означает, что вы должны использовать синтаксис Access), либо вы должны найти способ передачи значений параметров в SQL Server. с использованием сквозных запросов и / или кода VBA (если вообще используется MS Access).
(надеясь, что я не совсем неправ)