Проблема не в CAST, а в
DECLARE @StartDate date = '[Start date]', @EndDate date = '[End date]'
Я получаю ту же ошибку в SSMS, если пытаюсь выполнить этот оператор в одиночку.Проблема исчезнет, если я поменяю ее на
DECLARE @StartDate date = '2018-01-01', @EndDate date = '2018-12-31'
Не ясно, чего вы пытаетесь достичь, присваивая строковое значение '[Start date]'
переменной date
, но вам придетсяпридумайте другой способ сделать это.
Примечание. Вы называете это «запросом доступа», но это не Access SQL, а T-SQL (SQL Server), поэтому я предполагаю, что вы запускаете его каксквозной запрос в Access.Если это так, то имейте в виду, что сквозные запросы ведут себя совершенно иначе, чем обычные запросы Access, поскольку они не обрабатываются оценщиком выражений Access или Access Database Engine, они передаются непосредственно в источник данных ODBC (отсюда и название «pass-через запрос ").