考虑以下TSQL:

SET @WhereClause1 = 'where a.Date > ' + @InvoiceDate

我得到一个日期/字符串转换错误。 @InvoiceDate 是DateTime变量。什么是正确的语法?

有帮助吗?

解决方案

这可能起作用。

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

尽管该值为null,则会增加错误。

其他提示

这将起作用:

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top