Кажется, есть платный API для предприятий, чтобы использовать эту информацию. Я не использовал его, но об этом говорится в теме отслеживания проблем, упомянутой xomena ( https://issuetracker.google.com/issues/35821903 )
Это могло бы работать.
SET @WhereClause1 = 'where a.Date > ''' + convert(varchar, @InvoiceDate) + ''''
хотя ошибка будет повышена, если значение будет нулевым.
Начиная с Вашего создания запроса как строка сначала, затем я думаю, что необходимо преобразовать @InvoiceDate в строку с чем-то вроде этого. http://www.databasejournal.com/features/mssql/article.php/10894_2197931_1/Working-with-SQL-Server-DateTime-Variables-Part-Two---Displaying-Dates-and-Times-in-Different-Formats.htm
Это будет работать:
SET @WhereClause1 = 'where a.Date > ''' + cast(@InvoiceDate as varchar(100)) + ''''
... и необходимо будет, вероятно, включить строки даты в кавычки.
Вероятно, на самом деле было бы лучше создать строку даты в вызывающей подпрограмме, потому что необходимо проверять там на нулевые значения и возможно другие проверки.
EXEC sp_executesql N'SELECT * FROM Orders WHERE a.Date > @date',
N'@date datetime',
@date = @InvoiceDate