TSQL — Вставка дат в динамический SQL

Кажется, есть платный API для предприятий, чтобы использовать эту информацию. Я не использовал его, но об этом говорится в теме отслеживания проблем, упомянутой xomena ( https://issuetracker.google.com/issues/35821903 )

7
задан davmos 14 August 2017 в 10:17
поделиться

5 ответов

Это могло бы работать.

SET @WhereClause1 = 'where a.Date > ''' + convert(varchar, @InvoiceDate) + ''''

хотя ошибка будет повышена, если значение будет нулевым.

8
ответ дан 6 December 2019 в 11:53
поделиться

Начиная с Вашего создания запроса как строка сначала, затем я думаю, что необходимо преобразовать @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

1
ответ дан 6 December 2019 в 11:53
поделиться

Это будет работать:

SET @WhereClause1 = 'where a.Date > ''' + cast(@InvoiceDate as varchar(100)) + ''''
6
ответ дан 6 December 2019 в 11:53
поделиться

... и необходимо будет, вероятно, включить строки даты в кавычки.

Вероятно, на самом деле было бы лучше создать строку даты в вызывающей подпрограмме, потому что необходимо проверять там на нулевые значения и возможно другие проверки.

1
ответ дан 6 December 2019 в 11:53
поделиться
EXEC sp_executesql N'SELECT * FROM Orders WHERE a.Date > @date',
                   N'@date datetime',
                   @date = @InvoiceDate
1
ответ дан 6 December 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: